/*
 * jQuery UI 1.7.2
 *
 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://docs.jquery.com/UI
 */
jQuery.ui
		|| (function(c) {
			var i = c.fn.remove, d = c.browser.mozilla
					&& (parseFloat(c.browser.version) < 1.9);
			c.ui = {
				version : "1.7.2",
				plugin : {
					add : function(k, l, n) {
						var m = c.ui[k].prototype;
						for ( var j in n) {
							m.plugins[j] = m.plugins[j] || [];
							m.plugins[j].push([ l, n[j] ])
						}
					},
					call : function(j, l, k) {
						var n = j.plugins[l];
						if (!n || !j.element[0].parentNode) {
							return
						}
						for ( var m = 0; m < n.length; m++) {
							if (j.options[n[m][0]]) {
								n[m][1].apply(j.element, k)
							}
						}
					}
				},
				contains : function(k, j) {
					return document.compareDocumentPosition ? k
							.compareDocumentPosition(j) & 16 : k !== j
							&& k.contains(j)
				},
				hasScroll : function(m, k) {
					if (c(m).css("overflow") == "hidden") {
						return false
					}
					var j = (k && k == "left") ? "scrollLeft" : "scrollTop", l = false;
					if (m[j] > 0) {
						return true
					}
					m[j] = 1;
					l = (m[j] > 0);
					m[j] = 0;
					return l
				},
				isOverAxis : function(k, j, l) {
					return (k > j) && (k < (j + l))
				},
				isOver : function(o, k, n, m, j, l) {
					return c.ui.isOverAxis(o, n, j) && c.ui.isOverAxis(k, m, l)
				},
				keyCode : {
					BACKSPACE : 8,
					CAPS_LOCK : 20,
					COMMA : 188,
					CONTROL : 17,
					DELETE : 46,
					DOWN : 40,
					END : 35,
					ENTER : 13,
					ESCAPE : 27,
					HOME : 36,
					INSERT : 45,
					LEFT : 37,
					NUMPAD_ADD : 107,
					NUMPAD_DECIMAL : 110,
					NUMPAD_DIVIDE : 111,
					NUMPAD_ENTER : 108,
					NUMPAD_MULTIPLY : 106,
					NUMPAD_SUBTRACT : 109,
					PAGE_DOWN : 34,
					PAGE_UP : 33,
					PERIOD : 190,
					RIGHT : 39,
					SHIFT : 16,
					SPACE : 32,
					TAB : 9,
					UP : 38
				}
			};
			if (d) {
				var f = c.attr, e = c.fn.removeAttr, h = "http://www.w3.org/2005/07/aaa", a = /^aria-/, b = /^wairole:/;
				c.attr = function(k, j, l) {
					var m = l !== undefined;
					return (j == "role" ? (m ? f.call(this, k, j, "wairole:"
							+ l) : (f.apply(this, arguments) || "").replace(b,
							"")) : (a.test(j) ? (m ? k.setAttributeNS(h, j
							.replace(a, "aaa:"), l) : f.call(this, k, j
							.replace(a, "aaa:"))) : f.apply(this, arguments)))
				};
				c.fn.removeAttr = function(j) {
					return (a.test(j) ? this.each(function() {
						this.removeAttributeNS(h, j.replace(a, ""))
					}) : e.call(this, j))
				}
			}
			c.fn
					.extend({
						remove : function() {
							c("*", this).add(this).each(function() {
								c(this).triggerHandler("remove")
							});
							return i.apply(this, arguments)
						},
						enableSelection : function() {
							return this.attr("unselectable", "off").css(
									"MozUserSelect", "").unbind(
									"selectstart.ui")
						},
						disableSelection : function() {
							return this.attr("unselectable", "on").css(
									"MozUserSelect", "none").bind(
									"selectstart.ui", function() {
										return false
									})
						},
						scrollParent : function() {
							var j;
							if ((c.browser.msie && (/(static|relative)/)
									.test(this.css("position")))
									|| (/absolute/).test(this.css("position"))) {
								j = this
										.parents()
										.filter(
												function() {
													return (/(relative|absolute|fixed)/)
															.test(c.curCSS(
																	this,
																	"position",
																	1))
															&& (/(auto|scroll)/)
																	.test(c
																			.curCSS(
																					this,
																					"overflow",
																					1)
																			+ c
																					.curCSS(
																							this,
																							"overflow-y",
																							1)
																			+ c
																					.curCSS(
																							this,
																							"overflow-x",
																							1))
												}).eq(0)
							} else {
								j = this
										.parents()
										.filter(
												function() {
													return (/(auto|scroll)/)
															.test(c.curCSS(
																	this,
																	"overflow",
																	1)
																	+ c
																			.curCSS(
																					this,
																					"overflow-y",
																					1)
																	+ c
																			.curCSS(
																					this,
																					"overflow-x",
																					1))
												}).eq(0)
							}
							return (/fixed/).test(this.css("position"))
									|| !j.length ? c(document) : j
						}
					});
			c.extend(c.expr[":"],
					{
						data : function(l, k, j) {
							return !!c.data(l, j[3])
						},
						focusable : function(k) {
							var l = k.nodeName.toLowerCase(), j = c.attr(k,
									"tabindex");
							return (/input|select|textarea|button|object/
									.test(l) ? !k.disabled : "a" == l
									|| "area" == l ? k.href || !isNaN(j)
									: !isNaN(j))
									&& !c(k)["area" == l ? "parents"
											: "closest"](":hidden").length
						},
						tabbable : function(k) {
							var j = c.attr(k, "tabindex");
							return (isNaN(j) || j >= 0)
									&& c(k).is(":focusable")
						}
					});
			function g(m, n, o, l) {
				function k(q) {
					var p = c[m][n][q] || [];
					return (typeof p == "string" ? p.split(/,?\s+/) : p)
				}
				var j = k("getter");
				if (l.length == 1 && typeof l[0] == "string") {
					j = j.concat(k("getterSetter"))
				}
				return (c.inArray(o, j) != -1)
			}
			c.widget = function(k, j) {
				var l = k.split(".")[0];
				k = k.split(".")[1];
				c.fn[k] = function(p) {
					var n = (typeof p == "string"), o = Array.prototype.slice
							.call(arguments, 1);
					if (n && p.substring(0, 1) == "_") {
						return this
					}
					if (n && g(l, k, p, o)) {
						var m = c.data(this[0], k);
						return (m ? m[p].apply(m, o) : undefined)
					}
					return this.each(function() {
						var q = c.data(this, k);
						(!q && !n && c.data(this, k, new c[l][k](this, p))
								._init());
						(q && n && c.isFunction(q[p]) && q[p].apply(q, o))
					})
				};
				c[l] = c[l] || {};
				c[l][k] = function(o, n) {
					var m = this;
					this.namespace = l;
					this.widgetName = k;
					this.widgetEventPrefix = c[l][k].eventPrefix || k;
					this.widgetBaseClass = l + "-" + k;
					this.options = c.extend({}, c.widget.defaults,
							c[l][k].defaults, c.metadata
									&& c.metadata.get(o)[k], n);
					this.element = c(o).bind("setData." + k, function(q, p, r) {
						if (q.target == o) {
							return m._setData(p, r)
						}
					}).bind("getData." + k, function(q, p) {
						if (q.target == o) {
							return m._getData(p)
						}
					}).bind("remove", function() {
						return m.destroy()
					})
				};
				c[l][k].prototype = c.extend({}, c.widget.prototype, j);
				c[l][k].getterSetter = "option"
			};
			c.widget.prototype = {
				_init : function() {
				},
				destroy : function() {
					this.element.removeData(this.widgetName).removeClass(
							this.widgetBaseClass + "-disabled "
									+ this.namespace + "-state-disabled")
							.removeAttr("aria-disabled")
				},
				option : function(l, m) {
					var k = l, j = this;
					if (typeof l == "string") {
						if (m === undefined) {
							return this._getData(l)
						}
						k = {};
						k[l] = m
					}
					c.each(k, function(n, o) {
						j._setData(n, o)
					})
				},
				_getData : function(j) {
					return this.options[j]
				},
				_setData : function(j, k) {
					this.options[j] = k;
					if (j == "disabled") {
						this.element[k ? "addClass" : "removeClass"](
								this.widgetBaseClass + "-disabled "
										+ this.namespace + "-state-disabled")
								.attr("aria-disabled", k)
					}
				},
				enable : function() {
					this._setData("disabled", false)
				},
				disable : function() {
					this._setData("disabled", true)
				},
				_trigger : function(l, m, n) {
					var p = this.options[l], j = (l == this.widgetEventPrefix ? l
							: this.widgetEventPrefix + l);
					m = c.Event(m);
					m.type = j;
					if (m.originalEvent) {
						for ( var k = c.event.props.length, o; k;) {
							o = c.event.props[--k];
							m[o] = m.originalEvent[o]
						}
					}
					this.element.trigger(m, n);
					return !(c.isFunction(p)
							&& p.call(this.element[0], m, n) === false || m
							.isDefaultPrevented())
				}
			};
			c.widget.defaults = {
				disabled : false
			};
			c.ui.mouse = {
				_mouseInit : function() {
					var j = this;
					this.element.bind("mousedown." + this.widgetName,
							function(k) {
								return j._mouseDown(k)
							}).bind("click." + this.widgetName, function(k) {
						if (j._preventClickEvent) {
							j._preventClickEvent = false;
							k.stopImmediatePropagation();
							return false
						}
					});
					if (c.browser.msie) {
						this._mouseUnselectable = this.element
								.attr("unselectable");
						this.element.attr("unselectable", "on")
					}
					this.started = false
				},
				_mouseDestroy : function() {
					this.element.unbind("." + this.widgetName);
					(c.browser.msie && this.element.attr("unselectable",
							this._mouseUnselectable))
				},
				_mouseDown : function(l) {
					l.originalEvent = l.originalEvent || {};
					if (l.originalEvent.mouseHandled) {
						return
					}
					(this._mouseStarted && this._mouseUp(l));
					this._mouseDownEvent = l;
					var k = this, m = (l.which == 1), j = (typeof this.options.cancel == "string" ? c(
							l.target).parents().add(l.target).filter(
							this.options.cancel).length
							: false);
					if (!m || j || !this._mouseCapture(l)) {
						return true
					}
					this.mouseDelayMet = !this.options.delay;
					if (!this.mouseDelayMet) {
						this._mouseDelayTimer = setTimeout(function() {
							k.mouseDelayMet = true
						}, this.options.delay)
					}
					if (this._mouseDistanceMet(l) && this._mouseDelayMet(l)) {
						this._mouseStarted = (this._mouseStart(l) !== false);
						if (!this._mouseStarted) {
							l.preventDefault();
							return true
						}
					}
					this._mouseMoveDelegate = function(n) {
						return k._mouseMove(n)
					};
					this._mouseUpDelegate = function(n) {
						return k._mouseUp(n)
					};
					c(document).bind("mousemove." + this.widgetName,
							this._mouseMoveDelegate)
							.bind("mouseup." + this.widgetName,
									this._mouseUpDelegate);
					(c.browser.safari || l.preventDefault());
					l.originalEvent.mouseHandled = true;
					return true
				},
				_mouseMove : function(j) {
					if (c.browser.msie && !j.button) {
						return this._mouseUp(j)
					}
					if (this._mouseStarted) {
						this._mouseDrag(j);
						return j.preventDefault()
					}
					if (this._mouseDistanceMet(j) && this._mouseDelayMet(j)) {
						this._mouseStarted = (this._mouseStart(
								this._mouseDownEvent, j) !== false);
						(this._mouseStarted ? this._mouseDrag(j) : this
								._mouseUp(j))
					}
					return !this._mouseStarted
				},
				_mouseUp : function(j) {
					c(document).unbind("mousemove." + this.widgetName,
							this._mouseMoveDelegate)
							.unbind("mouseup." + this.widgetName,
									this._mouseUpDelegate);
					if (this._mouseStarted) {
						this._mouseStarted = false;
						this._preventClickEvent = (j.target == this._mouseDownEvent.target);
						this._mouseStop(j)
					}
					return false
				},
				_mouseDistanceMet : function(j) {
					return (Math.max(Math.abs(this._mouseDownEvent.pageX
							- j.pageX), Math.abs(this._mouseDownEvent.pageY
							- j.pageY)) >= this.options.distance)
				},
				_mouseDelayMet : function(j) {
					return this.mouseDelayMet
				},
				_mouseStart : function(j) {
				},
				_mouseDrag : function(j) {
				},
				_mouseStop : function(j) {
				},
				_mouseCapture : function(j) {
					return true
				}
			};
			c.ui.mouse.defaults = {
				cancel : null,
				distance : 1,
				delay : 0
			}
		})(jQuery);;/*
					 * jQuery UI Draggable 1.7.2
					 * 
					 * Copyright (c) 2009 AUTHORS.txt
					 * (http://jqueryui.com/about) Dual licensed under the MIT
					 * (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
					 * 
					 * http://docs.jquery.com/UI/Draggables
					 * 
					 * Depends: ui.core.js
					 */
(function(a) {
	a
			.widget(
					"ui.draggable",
					a
							.extend(
									{},
									a.ui.mouse,
									{
										_init : function() {
											if (this.options.helper == "original"
													&& !(/^(?:r|a|f)/)
															.test(this.element
																	.css("position"))) {
												this.element[0].style.position = "relative"
											}
											(this.options.addClasses && this.element
													.addClass("ui-draggable"));
											(this.options.disabled && this.element
													.addClass("ui-draggable-disabled"));
											this._mouseInit()
										},
										destroy : function() {
											if (!this.element.data("draggable")) {
												return
											}
											this.element
													.removeData("draggable")
													.unbind(".draggable")
													.removeClass(
															"ui-draggable ui-draggable-dragging ui-draggable-disabled");
											this._mouseDestroy()
										},
										_mouseCapture : function(b) {
											var c = this.options;
											if (this.helper
													|| c.disabled
													|| a(b.target)
															.is(
																	".ui-resizable-handle")) {
												return false
											}
											this.handle = this._getHandle(b);
											if (!this.handle) {
												return false
											}
											return true
										},
										_mouseStart : function(b) {
											var c = this.options;
											this.helper = this._createHelper(b);
											this._cacheHelperProportions();
											if (a.ui.ddmanager) {
												a.ui.ddmanager.current = this
											}
											this._cacheMargins();
											this.cssPosition = this.helper
													.css("position");
											this.scrollParent = this.helper
													.scrollParent();
											this.offset = this.element.offset();
											this.offset = {
												top : this.offset.top
														- this.margins.top,
												left : this.offset.left
														- this.margins.left
											};
											a.extend(this.offset, {
												click : {
													left : b.pageX
															- this.offset.left,
													top : b.pageY
															- this.offset.top
												},
												parent : this
														._getParentOffset(),
												relative : this
														._getRelativeOffset()
											});
											this.originalPosition = this
													._generatePosition(b);
											this.originalPageX = b.pageX;
											this.originalPageY = b.pageY;
											if (c.cursorAt) {
												this
														._adjustOffsetFromHelper(c.cursorAt)
											}
											if (c.containment) {
												this._setContainment()
											}
											this._trigger("start", b);
											this._cacheHelperProportions();
											if (a.ui.ddmanager
													&& !c.dropBehaviour) {
												a.ui.ddmanager.prepareOffsets(
														this, b)
											}
											this.helper
													.addClass("ui-draggable-dragging");
											this._mouseDrag(b, true);
											return true
										},
										_mouseDrag : function(b, d) {
											this.position = this
													._generatePosition(b);
											this.positionAbs = this
													._convertPositionTo("absolute");
											if (!d) {
												var c = this._uiHash();
												this._trigger("drag", b, c);
												this.position = c.position
											}
											if (!this.options.axis
													|| this.options.axis != "y") {
												this.helper[0].style.left = this.position.left
														+ "px"
											}
											if (!this.options.axis
													|| this.options.axis != "x") {
												this.helper[0].style.top = this.position.top
														+ "px"
											}
											if (a.ui.ddmanager) {
												a.ui.ddmanager.drag(this, b)
											}
											return false
										},
										_mouseStop : function(c) {
											var d = false;
											if (a.ui.ddmanager
													&& !this.options.dropBehaviour) {
												d = a.ui.ddmanager
														.drop(this, c)
											}
											if (this.dropped) {
												d = this.dropped;
												this.dropped = false
											}
											if ((this.options.revert == "invalid" && !d)
													|| (this.options.revert == "valid" && d)
													|| this.options.revert === true
													|| (a
															.isFunction(this.options.revert) && this.options.revert
															.call(this.element,
																	d))) {
												var b = this;
												a(this.helper)
														.animate(
																this.originalPosition,
																parseInt(
																		this.options.revertDuration,
																		10),
																function() {
																	b
																			._trigger(
																					"stop",
																					c);
																	b._clear()
																})
											} else {
												this._trigger("stop", c);
												this._clear()
											}
											return false
										},
										_getHandle : function(b) {
											var c = !this.options.handle
													|| !a(this.options.handle,
															this.element).length ? true
													: false;
											a(this.options.handle, this.element)
													.find("*").andSelf()
													.each(function() {
														if (this == b.target) {
															c = true
														}
													});
											return c
										},
										_createHelper : function(c) {
											var d = this.options;
											var b = a.isFunction(d.helper) ? a(d.helper
													.apply(this.element[0],
															[ c ]))
													: (d.helper == "clone" ? this.element
															.clone()
															: this.element);
											if (!b.parents("body").length) {
												b
														.appendTo((d.appendTo == "parent" ? this.element[0].parentNode
																: d.appendTo))
											}
											if (b[0] != this.element[0]
													&& !(/(fixed|absolute)/)
															.test(b
																	.css("position"))) {
												b.css("position", "absolute")
											}
											return b
										},
										_adjustOffsetFromHelper : function(b) {
											if (b.left != undefined) {
												this.offset.click.left = b.left
														+ this.margins.left
											}
											if (b.right != undefined) {
												this.offset.click.left = this.helperProportions.width
														- b.right
														+ this.margins.left
											}
											if (b.top != undefined) {
												this.offset.click.top = b.top
														+ this.margins.top
											}
											if (b.bottom != undefined) {
												this.offset.click.top = this.helperProportions.height
														- b.bottom
														+ this.margins.top
											}
										},
										_getParentOffset : function() {
											this.offsetParent = this.helper
													.offsetParent();
											var b = this.offsetParent.offset();
											if (this.cssPosition == "absolute"
													&& this.scrollParent[0] != document
													&& a.ui
															.contains(
																	this.scrollParent[0],
																	this.offsetParent[0])) {
												b.left += this.scrollParent
														.scrollLeft();
												b.top += this.scrollParent
														.scrollTop()
											}
											if ((this.offsetParent[0] == document.body)
													|| (this.offsetParent[0].tagName
															&& this.offsetParent[0].tagName
																	.toLowerCase() == "html" && a.browser.msie)) {
												b = {
													top : 0,
													left : 0
												}
											}
											return {
												top : b.top
														+ (parseInt(
																this.offsetParent
																		.css("borderTopWidth"),
																10) || 0),
												left : b.left
														+ (parseInt(
																this.offsetParent
																		.css("borderLeftWidth"),
																10) || 0)
											}
										},
										_getRelativeOffset : function() {
											if (this.cssPosition == "relative") {
												var b = this.element.position();
												return {
													top : b.top
															- (parseInt(
																	this.helper
																			.css("top"),
																	10) || 0)
															+ this.scrollParent
																	.scrollTop(),
													left : b.left
															- (parseInt(
																	this.helper
																			.css("left"),
																	10) || 0)
															+ this.scrollParent
																	.scrollLeft()
												}
											} else {
												return {
													top : 0,
													left : 0
												}
											}
										},
										_cacheMargins : function() {
											this.margins = {
												left : (parseInt(this.element
														.css("marginLeft"), 10) || 0),
												top : (parseInt(this.element
														.css("marginTop"), 10) || 0)
											}
										},
										_cacheHelperProportions : function() {
											this.helperProportions = {
												width : this.helper
														.outerWidth(),
												height : this.helper
														.outerHeight()
											}
										},
										_setContainment : function() {
											var e = this.options;
											if (e.containment == "parent") {
												e.containment = this.helper[0].parentNode
											}
											if (e.containment == "document"
													|| e.containment == "window") {
												this.containment = [
														0
																- this.offset.relative.left
																- this.offset.parent.left,
														0
																- this.offset.relative.top
																- this.offset.parent.top,
														a(
																e.containment == "document" ? document
																		: window)
																.width()
																- this.helperProportions.width
																- this.margins.left,
														(a(
																e.containment == "document" ? document
																		: window)
																.height() || document.body.parentNode.scrollHeight)
																- this.helperProportions.height
																- this.margins.top ]
											}
											if (!(/^(document|window|parent)$/)
													.test(e.containment)
													&& e.containment.constructor != Array) {
												var c = a(e.containment)[0];
												if (!c) {
													return
												}
												var d = a(e.containment)
														.offset();
												var b = (a(c).css("overflow") != "hidden");
												this.containment = [
														d.left
																+ (parseInt(
																		a(c)
																				.css(
																						"borderLeftWidth"),
																		10) || 0)
																+ (parseInt(
																		a(c)
																				.css(
																						"paddingLeft"),
																		10) || 0)
																- this.margins.left,
														d.top
																+ (parseInt(
																		a(c)
																				.css(
																						"borderTopWidth"),
																		10) || 0)
																+ (parseInt(
																		a(c)
																				.css(
																						"paddingTop"),
																		10) || 0)
																- this.margins.top,
														d.left
																+ (b ? Math
																		.max(
																				c.scrollWidth,
																				c.offsetWidth)
																		: c.offsetWidth)
																- (parseInt(
																		a(c)
																				.css(
																						"borderLeftWidth"),
																		10) || 0)
																- (parseInt(
																		a(c)
																				.css(
																						"paddingRight"),
																		10) || 0)
																- this.helperProportions.width
																- this.margins.left,
														d.top
																+ (b ? Math
																		.max(
																				c.scrollHeight,
																				c.offsetHeight)
																		: c.offsetHeight)
																- (parseInt(
																		a(c)
																				.css(
																						"borderTopWidth"),
																		10) || 0)
																- (parseInt(
																		a(c)
																				.css(
																						"paddingBottom"),
																		10) || 0)
																- this.helperProportions.height
																- this.margins.top ]
											} else {
												if (e.containment.constructor == Array) {
													this.containment = e.containment
												}
											}
										},
										_convertPositionTo : function(f, h) {
											if (!h) {
												h = this.position
											}
											var c = f == "absolute" ? 1 : -1;
											var e = this.options, b = this.cssPosition == "absolute"
													&& !(this.scrollParent[0] != document && a.ui
															.contains(
																	this.scrollParent[0],
																	this.offsetParent[0])) ? this.offsetParent
													: this.scrollParent, g = (/(html|body)/i)
													.test(b[0].tagName);
											return {
												top : (h.top
														+ this.offset.relative.top
														* c
														+ this.offset.parent.top
														* c - (a.browser.safari
														&& this.cssPosition == "fixed" ? 0
														: (this.cssPosition == "fixed" ? -this.scrollParent
																.scrollTop()
																: (g ? 0
																		: b
																				.scrollTop()))
																* c)),
												left : (h.left
														+ this.offset.relative.left
														* c
														+ this.offset.parent.left
														* c - (a.browser.safari
														&& this.cssPosition == "fixed" ? 0
														: (this.cssPosition == "fixed" ? -this.scrollParent
																.scrollLeft()
																: g ? 0
																		: b
																				.scrollLeft())
																* c))
											}
										},
										_generatePosition : function(e) {
											var h = this.options, b = this.cssPosition == "absolute"
													&& !(this.scrollParent[0] != document && a.ui
															.contains(
																	this.scrollParent[0],
																	this.offsetParent[0])) ? this.offsetParent
													: this.scrollParent, i = (/(html|body)/i)
													.test(b[0].tagName);
											if (this.cssPosition == "relative"
													&& !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {
												this.offset.relative = this
														._getRelativeOffset()
											}
											var d = e.pageX;
											var c = e.pageY;
											if (this.originalPosition) {
												if (this.containment) {
													if (e.pageX
															- this.offset.click.left < this.containment[0]) {
														d = this.containment[0]
																+ this.offset.click.left
													}
													if (e.pageY
															- this.offset.click.top < this.containment[1]) {
														c = this.containment[1]
																+ this.offset.click.top
													}
													if (e.pageX
															- this.offset.click.left > this.containment[2]) {
														d = this.containment[2]
																+ this.offset.click.left
													}
													if (e.pageY
															- this.offset.click.top > this.containment[3]) {
														c = this.containment[3]
																+ this.offset.click.top
													}
												}
												if (h.grid) {
													var g = this.originalPageY
															+ Math
																	.round((c - this.originalPageY)
																			/ h.grid[1])
															* h.grid[1];
													c = this.containment ? (!(g
															- this.offset.click.top < this.containment[1] || g
															- this.offset.click.top > this.containment[3]) ? g
															: (!(g
																	- this.offset.click.top < this.containment[1]) ? g
																	- h.grid[1]
																	: g
																			+ h.grid[1]))
															: g;
													var f = this.originalPageX
															+ Math
																	.round((d - this.originalPageX)
																			/ h.grid[0])
															* h.grid[0];
													d = this.containment ? (!(f
															- this.offset.click.left < this.containment[0] || f
															- this.offset.click.left > this.containment[2]) ? f
															: (!(f
																	- this.offset.click.left < this.containment[0]) ? f
																	- h.grid[0]
																	: f
																			+ h.grid[0]))
															: f
												}
											}
											return {
												top : (c
														- this.offset.click.top
														- this.offset.relative.top
														- this.offset.parent.top + (a.browser.safari
														&& this.cssPosition == "fixed" ? 0
														: (this.cssPosition == "fixed" ? -this.scrollParent
																.scrollTop()
																: (i ? 0
																		: b
																				.scrollTop())))),
												left : (d
														- this.offset.click.left
														- this.offset.relative.left
														- this.offset.parent.left + (a.browser.safari
														&& this.cssPosition == "fixed" ? 0
														: (this.cssPosition == "fixed" ? -this.scrollParent
																.scrollLeft()
																: i ? 0
																		: b
																				.scrollLeft())))
											}
										},
										_clear : function() {
											this.helper
													.removeClass("ui-draggable-dragging");
											if (this.helper[0] != this.element[0]
													&& !this.cancelHelperRemoval) {
												this.helper.remove()
											}
											this.helper = null;
											this.cancelHelperRemoval = false
										},
										_trigger : function(b, c, d) {
											d = d || this._uiHash();
											a.ui.plugin.call(this, b, [ c, d ]);
											if (b == "drag") {
												this.positionAbs = this
														._convertPositionTo("absolute")
											}
											return a.widget.prototype._trigger
													.call(this, b, c, d)
										},
										plugins : {},
										_uiHash : function(b) {
											return {
												helper : this.helper,
												position : this.position,
												absolutePosition : this.positionAbs,
												offset : this.positionAbs
											}
										}
									}));
	a.extend(a.ui.draggable, {
		version : "1.7.2",
		eventPrefix : "drag",
		defaults : {
			addClasses : true,
			appendTo : "parent",
			axis : false,
			cancel : ":input,option",
			connectToSortable : false,
			containment : false,
			cursor : "auto",
			cursorAt : false,
			delay : 0,
			distance : 1,
			grid : false,
			handle : false,
			helper : "original",
			iframeFix : false,
			opacity : false,
			refreshPositions : false,
			revert : false,
			revertDuration : 500,
			scope : "default",
			scroll : true,
			scrollSensitivity : 20,
			scrollSpeed : 20,
			snap : false,
			snapMode : "both",
			snapTolerance : 20,
			stack : false,
			zIndex : false
		}
	});
	a.ui.plugin
			.add(
					"draggable",
					"connectToSortable",
					{
						start : function(c, e) {
							var d = a(this).data("draggable"), f = d.options, b = a
									.extend({}, e, {
										item : d.element
									});
							d.sortables = [];
							a(f.connectToSortable).each(function() {
								var g = a.data(this, "sortable");
								if (g && !g.options.disabled) {
									d.sortables.push({
										instance : g,
										shouldRevert : g.options.revert
									});
									g._refreshItems();
									g._trigger("activate", c, b)
								}
							})
						},
						stop : function(c, e) {
							var d = a(this).data("draggable"), b = a.extend({},
									e, {
										item : d.element
									});
							a
									.each(
											d.sortables,
											function() {
												if (this.instance.isOver) {
													this.instance.isOver = 0;
													d.cancelHelperRemoval = true;
													this.instance.cancelHelperRemoval = false;
													if (this.shouldRevert) {
														this.instance.options.revert = true
													}
													this.instance._mouseStop(c);
													this.instance.options.helper = this.instance.options._helper;
													if (d.options.helper == "original") {
														this.instance.currentItem
																.css({
																	top : "auto",
																	left : "auto"
																})
													}
												} else {
													this.instance.cancelHelperRemoval = false;
													this.instance._trigger(
															"deactivate", c, b)
												}
											})
						},
						drag : function(c, f) {
							var e = a(this).data("draggable"), b = this;
							var d = function(i) {
								var n = this.offset.click.top, m = this.offset.click.left;
								var g = this.positionAbs.top, k = this.positionAbs.left;
								var j = i.height, l = i.width;
								var p = i.top, h = i.left;
								return a.ui.isOver(g + n, k + m, p, h, j, l)
							};
							a
									.each(
											e.sortables,
											function(g) {
												this.instance.positionAbs = e.positionAbs;
												this.instance.helperProportions = e.helperProportions;
												this.instance.offset.click = e.offset.click;
												if (this.instance
														._intersectsWith(this.instance.containerCache)) {
													if (!this.instance.isOver) {
														this.instance.isOver = 1;
														this.instance.currentItem = a(
																b)
																.clone()
																.appendTo(
																		this.instance.element)
																.data(
																		"sortable-item",
																		true);
														this.instance.options._helper = this.instance.options.helper;
														this.instance.options.helper = function() {
															return f.helper[0]
														};
														c.target = this.instance.currentItem[0];
														this.instance
																._mouseCapture(
																		c, true);
														this.instance
																._mouseStart(c,
																		true,
																		true);
														this.instance.offset.click.top = e.offset.click.top;
														this.instance.offset.click.left = e.offset.click.left;
														this.instance.offset.parent.left -= e.offset.parent.left
																- this.instance.offset.parent.left;
														this.instance.offset.parent.top -= e.offset.parent.top
																- this.instance.offset.parent.top;
														e
																._trigger(
																		"toSortable",
																		c);
														e.dropped = this.instance.element;
														e.currentItem = e.element;
														this.instance.fromOutside = e
													}
													if (this.instance.currentItem) {
														this.instance
																._mouseDrag(c)
													}
												} else {
													if (this.instance.isOver) {
														this.instance.isOver = 0;
														this.instance.cancelHelperRemoval = true;
														this.instance.options.revert = false;
														this.instance
																._trigger(
																		"out",
																		c,
																		this.instance
																				._uiHash(this.instance));
														this.instance
																._mouseStop(c,
																		true);
														this.instance.options.helper = this.instance.options._helper;
														this.instance.currentItem
																.remove();
														if (this.instance.placeholder) {
															this.instance.placeholder
																	.remove()
														}
														e._trigger(
																"fromSortable",
																c);
														e.dropped = false
													}
												}
											})
						}
					});
	a.ui.plugin.add("draggable", "cursor", {
		start : function(c, d) {
			var b = a("body"), e = a(this).data("draggable").options;
			if (b.css("cursor")) {
				e._cursor = b.css("cursor")
			}
			b.css("cursor", e.cursor)
		},
		stop : function(b, c) {
			var d = a(this).data("draggable").options;
			if (d._cursor) {
				a("body").css("cursor", d._cursor)
			}
		}
	});
	a.ui.plugin
			.add(
					"draggable",
					"iframeFix",
					{
						start : function(b, c) {
							var d = a(this).data("draggable").options;
							a(d.iframeFix === true ? "iframe" : d.iframeFix)
									.each(
											function() {
												a(
														'<div class="ui-draggable-iframeFix" style="background: #fff;"></div>')
														.css(
																{
																	width : this.offsetWidth
																			+ "px",
																	height : this.offsetHeight
																			+ "px",
																	position : "absolute",
																	opacity : "0.001",
																	zIndex : 1000
																})
														.css(a(this).offset())
														.appendTo("body")
											})
						},
						stop : function(b, c) {
							a("div.ui-draggable-iframeFix").each(function() {
								this.parentNode.removeChild(this)
							})
						}
					});
	a.ui.plugin.add("draggable", "opacity", {
		start : function(c, d) {
			var b = a(d.helper), e = a(this).data("draggable").options;
			if (b.css("opacity")) {
				e._opacity = b.css("opacity")
			}
			b.css("opacity", e.opacity)
		},
		stop : function(b, c) {
			var d = a(this).data("draggable").options;
			if (d._opacity) {
				a(c.helper).css("opacity", d._opacity)
			}
		}
	});
	a.ui.plugin
			.add(
					"draggable",
					"scroll",
					{
						start : function(c, d) {
							var b = a(this).data("draggable");
							if (b.scrollParent[0] != document
									&& b.scrollParent[0].tagName != "HTML") {
								b.overflowOffset = b.scrollParent.offset()
							}
						},
						drag : function(d, e) {
							var c = a(this).data("draggable"), f = c.options, b = false;
							if (c.scrollParent[0] != document
									&& c.scrollParent[0].tagName != "HTML") {
								if (!f.axis || f.axis != "x") {
									if ((c.overflowOffset.top + c.scrollParent[0].offsetHeight)
											- d.pageY < f.scrollSensitivity) {
										c.scrollParent[0].scrollTop = b = c.scrollParent[0].scrollTop
												+ f.scrollSpeed
									} else {
										if (d.pageY - c.overflowOffset.top < f.scrollSensitivity) {
											c.scrollParent[0].scrollTop = b = c.scrollParent[0].scrollTop
													- f.scrollSpeed
										}
									}
								}
								if (!f.axis || f.axis != "y") {
									if ((c.overflowOffset.left + c.scrollParent[0].offsetWidth)
											- d.pageX < f.scrollSensitivity) {
										c.scrollParent[0].scrollLeft = b = c.scrollParent[0].scrollLeft
												+ f.scrollSpeed
									} else {
										if (d.pageX - c.overflowOffset.left < f.scrollSensitivity) {
											c.scrollParent[0].scrollLeft = b = c.scrollParent[0].scrollLeft
													- f.scrollSpeed
										}
									}
								}
							} else {
								if (!f.axis || f.axis != "x") {
									if (d.pageY - a(document).scrollTop() < f.scrollSensitivity) {
										b = a(document).scrollTop(
												a(document).scrollTop()
														- f.scrollSpeed)
									} else {
										if (a(window).height()
												- (d.pageY - a(document)
														.scrollTop()) < f.scrollSensitivity) {
											b = a(document).scrollTop(
													a(document).scrollTop()
															+ f.scrollSpeed)
										}
									}
								}
								if (!f.axis || f.axis != "y") {
									if (d.pageX - a(document).scrollLeft() < f.scrollSensitivity) {
										b = a(document).scrollLeft(
												a(document).scrollLeft()
														- f.scrollSpeed)
									} else {
										if (a(window).width()
												- (d.pageX - a(document)
														.scrollLeft()) < f.scrollSensitivity) {
											b = a(document).scrollLeft(
													a(document).scrollLeft()
															+ f.scrollSpeed)
										}
									}
								}
							}
							if (b !== false && a.ui.ddmanager
									&& !f.dropBehaviour) {
								a.ui.ddmanager.prepareOffsets(c, d)
							}
						}
					});
	a.ui.plugin
			.add(
					"draggable",
					"snap",
					{
						start : function(c, d) {
							var b = a(this).data("draggable"), e = b.options;
							b.snapElements = [];
							a(
									e.snap.constructor != String ? (e.snap.items || ":data(draggable)")
											: e.snap).each(function() {
								var g = a(this);
								var f = g.offset();
								if (this != b.element[0]) {
									b.snapElements.push({
										item : this,
										width : g.outerWidth(),
										height : g.outerHeight(),
										top : f.top,
										left : f.left
									})
								}
							})
						},
						drag : function(u, p) {
							var g = a(this).data("draggable"), q = g.options;
							var y = q.snapTolerance;
							var x = p.offset.left, w = x
									+ g.helperProportions.width, f = p.offset.top, e = f
									+ g.helperProportions.height;
							for ( var v = g.snapElements.length - 1; v >= 0; v--) {
								var s = g.snapElements[v].left, n = s
										+ g.snapElements[v].width, m = g.snapElements[v].top, A = m
										+ g.snapElements[v].height;
								if (!((s - y < x && x < n + y && m - y < f && f < A
										+ y)
										|| (s - y < x && x < n + y && m - y < e && e < A
												+ y)
										|| (s - y < w && w < n + y && m - y < f && f < A
												+ y) || (s - y < w && w < n + y
										&& m - y < e && e < A + y))) {
									if (g.snapElements[v].snapping) {
										(g.options.snap.release && g.options.snap.release
												.call(
														g.element,
														u,
														a
																.extend(
																		g
																				._uiHash(),
																		{
																			snapItem : g.snapElements[v].item
																		})))
									}
									g.snapElements[v].snapping = false;
									continue
								}
								if (q.snapMode != "inner") {
									var c = Math.abs(m - e) <= y;
									var z = Math.abs(A - f) <= y;
									var j = Math.abs(s - w) <= y;
									var k = Math.abs(n - x) <= y;
									if (c) {
										p.position.top = g
												._convertPositionTo(
														"relative",
														{
															top : m
																	- g.helperProportions.height,
															left : 0
														}).top
												- g.margins.top
									}
									if (z) {
										p.position.top = g._convertPositionTo(
												"relative", {
													top : A,
													left : 0
												}).top
												- g.margins.top
									}
									if (j) {
										p.position.left = g
												._convertPositionTo(
														"relative",
														{
															top : 0,
															left : s
																	- g.helperProportions.width
														}).left
												- g.margins.left
									}
									if (k) {
										p.position.left = g._convertPositionTo(
												"relative", {
													top : 0,
													left : n
												}).left
												- g.margins.left
									}
								}
								var h = (c || z || j || k);
								if (q.snapMode != "outer") {
									var c = Math.abs(m - f) <= y;
									var z = Math.abs(A - e) <= y;
									var j = Math.abs(s - x) <= y;
									var k = Math.abs(n - w) <= y;
									if (c) {
										p.position.top = g._convertPositionTo(
												"relative", {
													top : m,
													left : 0
												}).top
												- g.margins.top
									}
									if (z) {
										p.position.top = g
												._convertPositionTo(
														"relative",
														{
															top : A
																	- g.helperProportions.height,
															left : 0
														}).top
												- g.margins.top
									}
									if (j) {
										p.position.left = g._convertPositionTo(
												"relative", {
													top : 0,
													left : s
												}).left
												- g.margins.left
									}
									if (k) {
										p.position.left = g
												._convertPositionTo(
														"relative",
														{
															top : 0,
															left : n
																	- g.helperProportions.width
														}).left
												- g.margins.left
									}
								}
								if (!g.snapElements[v].snapping
										&& (c || z || j || k || h)) {
									(g.options.snap.snap && g.options.snap.snap
											.call(
													g.element,
													u,
													a
															.extend(
																	g._uiHash(),
																	{
																		snapItem : g.snapElements[v].item
																	})))
								}
								g.snapElements[v].snapping = (c || z || j || k || h)
							}
						}
					});
	a.ui.plugin
			.add(
					"draggable",
					"stack",
					{
						start : function(b, c) {
							var e = a(this).data("draggable").options;
							var d = a
									.makeArray(a(e.stack.group))
									.sort(
											function(g, f) {
												return (parseInt(a(g).css(
														"zIndex"), 10) || e.stack.min)
														- (parseInt(a(f).css(
																"zIndex"), 10) || e.stack.min)
											});
							a(d).each(function(f) {
								this.style.zIndex = e.stack.min + f
							});
							this[0].style.zIndex = e.stack.min + d.length
						}
					});
	a.ui.plugin.add("draggable", "zIndex", {
		start : function(c, d) {
			var b = a(d.helper), e = a(this).data("draggable").options;
			if (b.css("zIndex")) {
				e._zIndex = b.css("zIndex")
			}
			b.css("zIndex", e.zIndex)
		},
		stop : function(b, c) {
			var d = a(this).data("draggable").options;
			if (d._zIndex) {
				a(c.helper).css("zIndex", d._zIndex)
			}
		}
	})
})(jQuery);;/*
			 * jQuery UI Resizable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Resizables
			 * 
			 * Depends: ui.core.js
			 */
(function(c) {
	c
			.widget(
					"ui.resizable",
					c
							.extend(
									{},
									c.ui.mouse,
									{
										_init : function() {
											var e = this, j = this.options;
											this.element
													.addClass("ui-resizable");
											c
													.extend(
															this,
															{
																_aspectRatio : !!(j.aspectRatio),
																aspectRatio : j.aspectRatio,
																originalElement : this.element,
																_proportionallyResizeElements : [],
																_helper : j.helper
																		|| j.ghost
																		|| j.animate ? j.helper
																		|| "ui-resizable-helper"
																		: null
															});
											if (this.element[0].nodeName
													.match(/canvas|textarea|input|select|button|img/i)) {
												if (/relative/
														.test(this.element
																.css("position"))
														&& c.browser.opera) {
													this.element.css({
														position : "relative",
														top : "auto",
														left : "auto"
													})
												}
												this.element
														.wrap(c(
																'<div class="ui-wrapper" style="overflow: hidden;"></div>')
																.css(
																		{
																			position : this.element
																					.css("position"),
																			width : this.element
																					.outerWidth(),
																			height : this.element
																					.outerHeight(),
																			top : this.element
																					.css("top"),
																			left : this.element
																					.css("left")
																		}));
												this.element = this.element
														.parent()
														.data(
																"resizable",
																this.element
																		.data("resizable"));
												this.elementIsWrapper = true;
												this.element
														.css({
															marginLeft : this.originalElement
																	.css("marginLeft"),
															marginTop : this.originalElement
																	.css("marginTop"),
															marginRight : this.originalElement
																	.css("marginRight"),
															marginBottom : this.originalElement
																	.css("marginBottom")
														});
												this.originalElement.css({
													marginLeft : 0,
													marginTop : 0,
													marginRight : 0,
													marginBottom : 0
												});
												this.originalResizeStyle = this.originalElement
														.css("resize");
												this.originalElement.css(
														"resize", "none");
												this._proportionallyResizeElements
														.push(this.originalElement
																.css({
																	position : "static",
																	zoom : 1,
																	display : "block"
																}));
												this.originalElement
														.css({
															margin : this.originalElement
																	.css("margin")
														});
												this._proportionallyResize()
											}
											this.handles = j.handles
													|| (!c(
															".ui-resizable-handle",
															this.element).length ? "e,s,se"
															: {
																n : ".ui-resizable-n",
																e : ".ui-resizable-e",
																s : ".ui-resizable-s",
																w : ".ui-resizable-w",
																se : ".ui-resizable-se",
																sw : ".ui-resizable-sw",
																ne : ".ui-resizable-ne",
																nw : ".ui-resizable-nw"
															});
											if (this.handles.constructor == String) {
												if (this.handles == "all") {
													this.handles = "n,e,s,w,se,sw,ne,nw"
												}
												var k = this.handles.split(",");
												this.handles = {};
												for ( var f = 0; f < k.length; f++) {
													var h = c.trim(k[f]), d = "ui-resizable-"
															+ h;
													var g = c('<div class="ui-resizable-handle '
															+ d + '"></div>');
													if (/sw|se|ne|nw/.test(h)) {
														g.css({
															zIndex : ++j.zIndex
														})
													}
													if ("se" == h) {
														g
																.addClass("ui-icon ui-icon-gripsmall-diagonal-se")
													}
													this.handles[h] = ".ui-resizable-"
															+ h;
													this.element.append(g)
												}
											}
											this._renderAxis = function(p) {
												p = p || this.element;
												for ( var m in this.handles) {
													if (this.handles[m].constructor == String) {
														this.handles[m] = c(
																this.handles[m],
																this.element)
																.show()
													}
													if (this.elementIsWrapper
															&& this.originalElement[0].nodeName
																	.match(/textarea|input|select|button/i)) {
														var n = c(
																this.handles[m],
																this.element), o = 0;
														o = /sw|ne|nw|se|n|s/
																.test(m) ? n
																.outerHeight()
																: n
																		.outerWidth();
														var l = [
																"padding",
																/ne|nw|n/
																		.test(m) ? "Top"
																		: /se|sw|s/
																				.test(m) ? "Bottom"
																				: /^e$/
																						.test(m) ? "Right"
																						: "Left" ]
																.join("");
														p.css(l, o);
														this
																._proportionallyResize()
													}
													if (!c(this.handles[m]).length) {
														continue
													}
												}
											};
											this._renderAxis(this.element);
											this._handles = c(
													".ui-resizable-handle",
													this.element)
													.disableSelection();
											this._handles
													.mouseover(function() {
														if (!e.resizing) {
															if (this.className) {
																var i = this.className
																		.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)
															}
															e.axis = i && i[1] ? i[1]
																	: "se"
														}
													});
											if (j.autoHide) {
												this._handles.hide();
												c(this.element)
														.addClass(
																"ui-resizable-autohide")
														.hover(
																function() {
																	c(this)
																			.removeClass(
																					"ui-resizable-autohide");
																	e._handles
																			.show()
																},
																function() {
																	if (!e.resizing) {
																		c(this)
																				.addClass(
																						"ui-resizable-autohide");
																		e._handles
																				.hide()
																	}
																})
											}
											this._mouseInit()
										},
										destroy : function() {
											this._mouseDestroy();
											var d = function(f) {
												c(f)
														.removeClass(
																"ui-resizable ui-resizable-disabled ui-resizable-resizing")
														.removeData("resizable")
														.unbind(".resizable")
														.find(
																".ui-resizable-handle")
														.remove()
											};
											if (this.elementIsWrapper) {
												d(this.element);
												var e = this.element;
												e
														.parent()
														.append(
																this.originalElement
																		.css({
																			position : e
																					.css("position"),
																			width : e
																					.outerWidth(),
																			height : e
																					.outerHeight(),
																			top : e
																					.css("top"),
																			left : e
																					.css("left")
																		}))
														.end().remove()
											}
											this.originalElement.css("resize",
													this.originalResizeStyle);
											d(this.originalElement)
										},
										_mouseCapture : function(e) {
											var f = false;
											for ( var d in this.handles) {
												if (c(this.handles[d])[0] == e.target) {
													f = true
												}
											}
											return this.options.disabled || !!f
										},
										_mouseStart : function(f) {
											var i = this.options, e = this.element
													.position(), d = this.element;
											this.resizing = true;
											this.documentScroll = {
												top : c(document).scrollTop(),
												left : c(document).scrollLeft()
											};
											if (d.is(".ui-draggable")
													|| (/absolute/).test(d
															.css("position"))) {
												d.css({
													position : "absolute",
													top : e.top,
													left : e.left
												})
											}
											if (c.browser.opera
													&& (/relative/).test(d
															.css("position"))) {
												d.css({
													position : "relative",
													top : "auto",
													left : "auto"
												})
											}
											this._renderProxy();
											var j = b(this.helper.css("left")), g = b(this.helper
													.css("top"));
											if (i.containment) {
												j += c(i.containment)
														.scrollLeft() || 0;
												g += c(i.containment)
														.scrollTop() || 0
											}
											this.offset = this.helper.offset();
											this.position = {
												left : j,
												top : g
											};
											this.size = this._helper ? {
												width : d.outerWidth(),
												height : d.outerHeight()
											} : {
												width : d.width(),
												height : d.height()
											};
											this.originalSize = this._helper ? {
												width : d.outerWidth(),
												height : d.outerHeight()
											}
													: {
														width : d.width(),
														height : d.height()
													};
											this.originalPosition = {
												left : j,
												top : g
											};
											this.sizeDiff = {
												width : d.outerWidth()
														- d.width(),
												height : d.outerHeight()
														- d.height()
											};
											this.originalMousePosition = {
												left : f.pageX,
												top : f.pageY
											};
											this.aspectRatio = (typeof i.aspectRatio == "number") ? i.aspectRatio
													: ((this.originalSize.width / this.originalSize.height) || 1);
											var h = c(
													".ui-resizable-"
															+ this.axis).css(
													"cursor");
											c("body").css(
													"cursor",
													h == "auto" ? this.axis
															+ "-resize" : h);
											d.addClass("ui-resizable-resizing");
											this._propagate("start", f);
											return true
										},
										_mouseDrag : function(d) {
											var g = this.helper, f = this.options, l = {}, p = this, i = this.originalMousePosition, m = this.axis;
											var q = (d.pageX - i.left) || 0, n = (d.pageY - i.top) || 0;
											var h = this._change[m];
											if (!h) {
												return false
											}
											var k = h.apply(this, [ d, q, n ]), j = c.browser.msie
													&& c.browser.version < 7, e = this.sizeDiff;
											if (this._aspectRatio || d.shiftKey) {
												k = this._updateRatio(k, d)
											}
											k = this._respectSize(k, d);
											this._propagate("resize", d);
											g.css({
												top : this.position.top + "px",
												left : this.position.left
														+ "px",
												width : this.size.width + "px",
												height : this.size.height
														+ "px"
											});
											if (!this._helper
													&& this._proportionallyResizeElements.length) {
												this._proportionallyResize()
											}
											this._updateCache(k);
											this._trigger("resize", d, this
													.ui());
											return false
										},
										_mouseStop : function(g) {
											this.resizing = false;
											var h = this.options, l = this;
											if (this._helper) {
												var f = this._proportionallyResizeElements, d = f.length
														&& (/textarea/i)
																.test(f[0].nodeName), e = d
														&& c.ui.hasScroll(f[0],
																"left") ? 0
														: l.sizeDiff.height, j = d ? 0
														: l.sizeDiff.width;
												var m = {
													width : (l.size.width - j),
													height : (l.size.height - e)
												}, i = (parseInt(l.element
														.css("left"), 10) + (l.position.left - l.originalPosition.left))
														|| null, k = (parseInt(
														l.element.css("top"),
														10) + (l.position.top - l.originalPosition.top))
														|| null;
												if (!h.animate) {
													this.element.css(c.extend(
															m, {
																top : k,
																left : i
															}))
												}
												l.helper.height(l.size.height);
												l.helper.width(l.size.width);
												if (this._helper && !h.animate) {
													this
															._proportionallyResize()
												}
											}
											c("body").css("cursor", "auto");
											this.element
													.removeClass("ui-resizable-resizing");
											this._propagate("stop", g);
											if (this._helper) {
												this.helper.remove()
											}
											return false
										},
										_updateCache : function(d) {
											var e = this.options;
											this.offset = this.helper.offset();
											if (a(d.left)) {
												this.position.left = d.left
											}
											if (a(d.top)) {
												this.position.top = d.top
											}
											if (a(d.height)) {
												this.size.height = d.height
											}
											if (a(d.width)) {
												this.size.width = d.width
											}
										},
										_updateRatio : function(g, f) {
											var h = this.options, i = this.position, e = this.size, d = this.axis;
											if (g.height) {
												g.width = (e.height * this.aspectRatio)
											} else {
												if (g.width) {
													g.height = (e.width / this.aspectRatio)
												}
											}
											if (d == "sw") {
												g.left = i.left
														+ (e.width - g.width);
												g.top = null
											}
											if (d == "nw") {
												g.top = i.top
														+ (e.height - g.height);
												g.left = i.left
														+ (e.width - g.width)
											}
											return g
										},
										_respectSize : function(k, f) {
											var i = this.helper, h = this.options, q = this._aspectRatio
													|| f.shiftKey, p = this.axis, s = a(k.width)
													&& h.maxWidth
													&& (h.maxWidth < k.width), l = a(k.height)
													&& h.maxHeight
													&& (h.maxHeight < k.height), g = a(k.width)
													&& h.minWidth
													&& (h.minWidth > k.width), r = a(k.height)
													&& h.minHeight
													&& (h.minHeight > k.height);
											if (g) {
												k.width = h.minWidth
											}
											if (r) {
												k.height = h.minHeight
											}
											if (s) {
												k.width = h.maxWidth
											}
											if (l) {
												k.height = h.maxHeight
											}
											var e = this.originalPosition.left
													+ this.originalSize.width, n = this.position.top
													+ this.size.height;
											var j = /sw|nw|w/.test(p), d = /nw|ne|n/
													.test(p);
											if (g && j) {
												k.left = e - h.minWidth
											}
											if (s && j) {
												k.left = e - h.maxWidth
											}
											if (r && d) {
												k.top = n - h.minHeight
											}
											if (l && d) {
												k.top = n - h.maxHeight
											}
											var m = !k.width && !k.height;
											if (m && !k.left && k.top) {
												k.top = null
											} else {
												if (m && !k.top && k.left) {
													k.left = null
												}
											}
											return k
										},
										_proportionallyResize : function() {
											var j = this.options;
											if (!this._proportionallyResizeElements.length) {
												return
											}
											var f = this.helper || this.element;
											for ( var e = 0; e < this._proportionallyResizeElements.length; e++) {
												var g = this._proportionallyResizeElements[e];
												if (!this.borderDif) {
													var d = [
															g
																	.css("borderTopWidth"),
															g
																	.css("borderRightWidth"),
															g
																	.css("borderBottomWidth"),
															g
																	.css("borderLeftWidth") ], h = [
															g.css("paddingTop"),
															g
																	.css("paddingRight"),
															g
																	.css("paddingBottom"),
															g
																	.css("paddingLeft") ];
													this.borderDif = c
															.map(
																	d,
																	function(k,
																			m) {
																		var l = parseInt(
																				k,
																				10) || 0, n = parseInt(
																				h[m],
																				10) || 0;
																		return l
																				+ n
																	})
												}
												if (c.browser.msie
														&& !(!(c(f).is(
																":hidden") || c(
																f).parents(
																":hidden").length))) {
													continue
												}
												g
														.css({
															height : (f
																	.height()
																	- this.borderDif[0] - this.borderDif[2]) || 0,
															width : (f.width()
																	- this.borderDif[1] - this.borderDif[3]) || 0
														})
											}
										},
										_renderProxy : function() {
											var e = this.element, h = this.options;
											this.elementOffset = e.offset();
											if (this._helper) {
												this.helper = this.helper
														|| c('<div style="overflow:hidden;"></div>');
												var d = c.browser.msie
														&& c.browser.version < 7, f = (d ? 1
														: 0), g = (d ? 2 : -1);
												this.helper
														.addClass(this._helper)
														.css(
																{
																	width : this.element
																			.outerWidth()
																			+ g,
																	height : this.element
																			.outerHeight()
																			+ g,
																	position : "absolute",
																	left : this.elementOffset.left
																			- f
																			+ "px",
																	top : this.elementOffset.top
																			- f
																			+ "px",
																	zIndex : ++h.zIndex
																});
												this.helper.appendTo("body")
														.disableSelection()
											} else {
												this.helper = this.element
											}
										},
										_change : {
											e : function(f, e, d) {
												return {
													width : this.originalSize.width
															+ e
												}
											},
											w : function(g, e, d) {
												var i = this.options, f = this.originalSize, h = this.originalPosition;
												return {
													left : h.left + e,
													width : f.width - e
												}
											},
											n : function(g, e, d) {
												var i = this.options, f = this.originalSize, h = this.originalPosition;
												return {
													top : h.top + d,
													height : f.height - d
												}
											},
											s : function(f, e, d) {
												return {
													height : this.originalSize.height
															+ d
												}
											},
											se : function(f, e, d) {
												return c
														.extend(
																this._change.s
																		.apply(
																				this,
																				arguments),
																this._change.e
																		.apply(
																				this,
																				[
																						f,
																						e,
																						d ]))
											},
											sw : function(f, e, d) {
												return c
														.extend(
																this._change.s
																		.apply(
																				this,
																				arguments),
																this._change.w
																		.apply(
																				this,
																				[
																						f,
																						e,
																						d ]))
											},
											ne : function(f, e, d) {
												return c
														.extend(
																this._change.n
																		.apply(
																				this,
																				arguments),
																this._change.e
																		.apply(
																				this,
																				[
																						f,
																						e,
																						d ]))
											},
											nw : function(f, e, d) {
												return c
														.extend(
																this._change.n
																		.apply(
																				this,
																				arguments),
																this._change.w
																		.apply(
																				this,
																				[
																						f,
																						e,
																						d ]))
											}
										},
										_propagate : function(e, d) {
											c.ui.plugin.call(this, e, [ d,
													this.ui() ]);
											(e != "resize" && this._trigger(e,
													d, this.ui()))
										},
										plugins : {},
										ui : function() {
											return {
												originalElement : this.originalElement,
												element : this.element,
												helper : this.helper,
												position : this.position,
												size : this.size,
												originalSize : this.originalSize,
												originalPosition : this.originalPosition
											}
										}
									}));
	c.extend(c.ui.resizable, {
		version : "1.7.2",
		eventPrefix : "resize",
		defaults : {
			alsoResize : false,
			animate : false,
			animateDuration : "slow",
			animateEasing : "swing",
			aspectRatio : false,
			autoHide : false,
			cancel : ":input,option",
			containment : false,
			delay : 0,
			distance : 1,
			ghost : false,
			grid : false,
			handles : "e,s,se",
			helper : false,
			maxHeight : null,
			maxWidth : null,
			minHeight : 10,
			minWidth : 10,
			zIndex : 1000
		}
	});
	c.ui.plugin
			.add(
					"resizable",
					"alsoResize",
					{
						start : function(e, f) {
							var d = c(this).data("resizable"), g = d.options;
							_store = function(h) {
								c(h)
										.each(
												function() {
													c(this)
															.data(
																	"resizable-alsoresize",
																	{
																		width : parseInt(
																				c(
																						this)
																						.width(),
																				10),
																		height : parseInt(
																				c(
																						this)
																						.height(),
																				10),
																		left : parseInt(
																				c(
																						this)
																						.css(
																								"left"),
																				10),
																		top : parseInt(
																				c(
																						this)
																						.css(
																								"top"),
																				10)
																	})
												})
							};
							if (typeof (g.alsoResize) == "object"
									&& !g.alsoResize.parentNode) {
								if (g.alsoResize.length) {
									g.alsoResize = g.alsoResize[0];
									_store(g.alsoResize)
								} else {
									c.each(g.alsoResize, function(h, i) {
										_store(h)
									})
								}
							} else {
								_store(g.alsoResize)
							}
						},
						resize : function(f, h) {
							var e = c(this).data("resizable"), i = e.options, g = e.originalSize, k = e.originalPosition;
							var j = {
								height : (e.size.height - g.height) || 0,
								width : (e.size.width - g.width) || 0,
								top : (e.position.top - k.top) || 0,
								left : (e.position.left - k.left) || 0
							}, d = function(l, m) {
								c(l)
										.each(
												function() {
													var p = c(this), q = c(this)
															.data(
																	"resizable-alsoresize"), o = {}, n = m
															&& m.length ? m : [
															"width", "height",
															"top", "left" ];
													c
															.each(
																	n
																			|| [
																					"width",
																					"height",
																					"top",
																					"left" ],
																	function(r,
																			t) {
																		var s = (q[t] || 0)
																				+ (j[t] || 0);
																		if (s
																				&& s >= 0) {
																			o[t] = s
																					|| null
																		}
																	});
													if (/relative/.test(p
															.css("position"))
															&& c.browser.opera) {
														e._revertToRelativePosition = true;
														p
																.css({
																	position : "absolute",
																	top : "auto",
																	left : "auto"
																})
													}
													p.css(o)
												})
							};
							if (typeof (i.alsoResize) == "object"
									&& !i.alsoResize.nodeType) {
								c.each(i.alsoResize, function(l, m) {
									d(l, m)
								})
							} else {
								d(i.alsoResize)
							}
						},
						stop : function(e, f) {
							var d = c(this).data("resizable");
							if (d._revertToRelativePosition && c.browser.opera) {
								d._revertToRelativePosition = false;
								el.css({
									position : "relative"
								})
							}
							c(this).removeData("resizable-alsoresize-start")
						}
					});
	c.ui.plugin
			.add(
					"resizable",
					"animate",
					{
						stop : function(h, m) {
							var n = c(this).data("resizable"), i = n.options;
							var g = n._proportionallyResizeElements, d = g.length
									&& (/textarea/i).test(g[0].nodeName), e = d
									&& c.ui.hasScroll(g[0], "left") ? 0
									: n.sizeDiff.height, k = d ? 0
									: n.sizeDiff.width;
							var f = {
								width : (n.size.width - k),
								height : (n.size.height - e)
							}, j = (parseInt(n.element.css("left"), 10) + (n.position.left - n.originalPosition.left))
									|| null, l = (parseInt(
									n.element.css("top"), 10) + (n.position.top - n.originalPosition.top))
									|| null;
							n.element.animate(c.extend(f, l && j ? {
								top : l,
								left : j
							} : {}),
									{
										duration : i.animateDuration,
										easing : i.animateEasing,
										step : function() {
											var o = {
												width : parseInt(n.element
														.css("width"), 10),
												height : parseInt(n.element
														.css("height"), 10),
												top : parseInt(n.element
														.css("top"), 10),
												left : parseInt(n.element
														.css("left"), 10)
											};
											if (g && g.length) {
												c(g[0]).css({
													width : o.width,
													height : o.height
												})
											}
											n._updateCache(o);
											n._propagate("resize", h)
										}
									})
						}
					});
	c.ui.plugin
			.add(
					"resizable",
					"containment",
					{
						start : function(e, q) {
							var s = c(this).data("resizable"), i = s.options, k = s.element;
							var f = i.containment, j = (f instanceof c) ? f
									.get(0) : (/parent/.test(f)) ? k.parent()
									.get(0) : f;
							if (!j) {
								return
							}
							s.containerElement = c(j);
							if (/document/.test(f) || f == document) {
								s.containerOffset = {
									left : 0,
									top : 0
								};
								s.containerPosition = {
									left : 0,
									top : 0
								};
								s.parentData = {
									element : c(document),
									left : 0,
									top : 0,
									width : c(document).width(),
									height : c(document).height()
											|| document.body.parentNode.scrollHeight
								}
							} else {
								var m = c(j), h = [];
								c([ "Top", "Right", "Left", "Bottom" ]).each(
										function(p, o) {
											h[p] = b(m.css("padding" + o))
										});
								s.containerOffset = m.offset();
								s.containerPosition = m.position();
								s.containerSize = {
									height : (m.innerHeight() - h[3]),
									width : (m.innerWidth() - h[1])
								};
								var n = s.containerOffset, d = s.containerSize.height, l = s.containerSize.width, g = (c.ui
										.hasScroll(j, "left") ? j.scrollWidth
										: l), r = (c.ui.hasScroll(j) ? j.scrollHeight
										: d);
								s.parentData = {
									element : j,
									left : n.left,
									top : n.top,
									width : g,
									height : r
								}
							}
						},
						resize : function(f, p) {
							var s = c(this).data("resizable"), h = s.options, e = s.containerSize, n = s.containerOffset, l = s.size, m = s.position, q = s._aspectRatio
									|| f.shiftKey, d = {
								top : 0,
								left : 0
							}, g = s.containerElement;
							if (g[0] != document
									&& (/static/).test(g.css("position"))) {
								d = n
							}
							if (m.left < (s._helper ? n.left : 0)) {
								s.size.width = s.size.width
										+ (s._helper ? (s.position.left - n.left)
												: (s.position.left - d.left));
								if (q) {
									s.size.height = s.size.width
											/ h.aspectRatio
								}
								s.position.left = h.helper ? n.left : 0
							}
							if (m.top < (s._helper ? n.top : 0)) {
								s.size.height = s.size.height
										+ (s._helper ? (s.position.top - n.top)
												: s.position.top);
								if (q) {
									s.size.width = s.size.height
											* h.aspectRatio
								}
								s.position.top = s._helper ? n.top : 0
							}
							s.offset.left = s.parentData.left + s.position.left;
							s.offset.top = s.parentData.top + s.position.top;
							var k = Math.abs((s._helper ? s.offset.left
									- d.left : (s.offset.left - d.left))
									+ s.sizeDiff.width), r = Math
									.abs((s._helper ? s.offset.top - d.top
											: (s.offset.top - n.top))
											+ s.sizeDiff.height);
							var j = s.containerElement.get(0) == s.element
									.parent().get(0), i = /relative|absolute/
									.test(s.containerElement.css("position"));
							if (j && i) {
								k -= s.parentData.left
							}
							if (k + s.size.width >= s.parentData.width) {
								s.size.width = s.parentData.width - k;
								if (q) {
									s.size.height = s.size.width
											/ s.aspectRatio
								}
							}
							if (r + s.size.height >= s.parentData.height) {
								s.size.height = s.parentData.height - r;
								if (q) {
									s.size.width = s.size.height
											* s.aspectRatio
								}
							}
						},
						stop : function(e, m) {
							var p = c(this).data("resizable"), f = p.options, k = p.position, l = p.containerOffset, d = p.containerPosition, g = p.containerElement;
							var i = c(p.helper), q = i.offset(), n = i
									.outerWidth()
									- p.sizeDiff.width, j = i.outerHeight()
									- p.sizeDiff.height;
							if (p._helper && !f.animate
									&& (/relative/).test(g.css("position"))) {
								c(this).css({
									left : q.left - d.left - l.left,
									width : n,
									height : j
								})
							}
							if (p._helper && !f.animate
									&& (/static/).test(g.css("position"))) {
								c(this).css({
									left : q.left - d.left - l.left,
									width : n,
									height : j
								})
							}
						}
					});
	c.ui.plugin.add("resizable", "ghost", {
		start : function(f, g) {
			var d = c(this).data("resizable"), h = d.options, e = d.size;
			d.ghost = d.originalElement.clone();
			d.ghost.css({
				opacity : 0.25,
				display : "block",
				position : "relative",
				height : e.height,
				width : e.width,
				margin : 0,
				left : 0,
				top : 0
			}).addClass("ui-resizable-ghost").addClass(
					typeof h.ghost == "string" ? h.ghost : "");
			d.ghost.appendTo(d.helper)
		},
		resize : function(e, f) {
			var d = c(this).data("resizable"), g = d.options;
			if (d.ghost) {
				d.ghost.css({
					position : "relative",
					height : d.size.height,
					width : d.size.width
				})
			}
		},
		stop : function(e, f) {
			var d = c(this).data("resizable"), g = d.options;
			if (d.ghost && d.helper) {
				d.helper.get(0).removeChild(d.ghost.get(0))
			}
		}
	});
	c.ui.plugin
			.add(
					"resizable",
					"grid",
					{
						resize : function(d, l) {
							var n = c(this).data("resizable"), g = n.options, j = n.size, h = n.originalSize, i = n.originalPosition, m = n.axis, k = g._aspectRatio
									|| d.shiftKey;
							g.grid = typeof g.grid == "number" ? [ g.grid,
									g.grid ] : g.grid;
							var f = Math.round((j.width - h.width)
									/ (g.grid[0] || 1))
									* (g.grid[0] || 1), e = Math
									.round((j.height - h.height)
											/ (g.grid[1] || 1))
									* (g.grid[1] || 1);
							if (/^(se|s|e)$/.test(m)) {
								n.size.width = h.width + f;
								n.size.height = h.height + e
							} else {
								if (/^(ne)$/.test(m)) {
									n.size.width = h.width + f;
									n.size.height = h.height + e;
									n.position.top = i.top - e
								} else {
									if (/^(sw)$/.test(m)) {
										n.size.width = h.width + f;
										n.size.height = h.height + e;
										n.position.left = i.left - f
									} else {
										n.size.width = h.width + f;
										n.size.height = h.height + e;
										n.position.top = i.top - e;
										n.position.left = i.left - f
									}
								}
							}
						}
					});
	var b = function(d) {
		return parseInt(d, 10) || 0
	};
	var a = function(d) {
		return !isNaN(parseInt(d, 10))
	}
})(jQuery);;/*
			 * jQuery UI Selectable 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Selectables
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a
			.widget(
					"ui.selectable",
					a
							.extend(
									{},
									a.ui.mouse,
									{
										_init : function() {
											var b = this;
											this.element
													.addClass("ui-selectable");
											this.dragged = false;
											var c;
											this.refresh = function() {
												c = a(b.options.filter,
														b.element[0]);
												c
														.each(function() {
															var d = a(this);
															var e = d.offset();
															a
																	.data(
																			this,
																			"selectable-item",
																			{
																				element : this,
																				$element : d,
																				left : e.left,
																				top : e.top,
																				right : e.left
																						+ d
																								.outerWidth(),
																				bottom : e.top
																						+ d
																								.outerHeight(),
																				startselected : false,
																				selected : d
																						.hasClass("ui-selected"),
																				selecting : d
																						.hasClass("ui-selecting"),
																				unselecting : d
																						.hasClass("ui-unselecting")
																			})
														})
											};
											this.refresh();
											this.selectees = c
													.addClass("ui-selectee");
											this._mouseInit();
											this.helper = a(
													document
															.createElement("div"))
													.css(
															{
																border : "1px dotted black"
															})
													.addClass(
															"ui-selectable-helper")
										},
										destroy : function() {
											this.element
													.removeClass(
															"ui-selectable ui-selectable-disabled")
													.removeData("selectable")
													.unbind(".selectable");
											this._mouseDestroy()
										},
										_mouseStart : function(d) {
											var b = this;
											this.opos = [ d.pageX, d.pageY ];
											if (this.options.disabled) {
												return
											}
											var c = this.options;
											this.selectees = a(c.filter,
													this.element[0]);
											this._trigger("start", d);
											a(c.appendTo).append(this.helper);
											this.helper.css({
												"z-index" : 100,
												position : "absolute",
												left : d.clientX,
												top : d.clientY,
												width : 0,
												height : 0
											});
											if (c.autoRefresh) {
												this.refresh()
											}
											this.selectees
													.filter(".ui-selected")
													.each(
															function() {
																var e = a
																		.data(
																				this,
																				"selectable-item");
																e.startselected = true;
																if (!d.metaKey) {
																	e.$element
																			.removeClass("ui-selected");
																	e.selected = false;
																	e.$element
																			.addClass("ui-unselecting");
																	e.unselecting = true;
																	b
																			._trigger(
																					"unselecting",
																					d,
																					{
																						unselecting : e.element
																					})
																}
															});
											a(d.target)
													.parents()
													.andSelf()
													.each(
															function() {
																var e = a
																		.data(
																				this,
																				"selectable-item");
																if (e) {
																	e.$element
																			.removeClass(
																					"ui-unselecting")
																			.addClass(
																					"ui-selecting");
																	e.unselecting = false;
																	e.selecting = true;
																	e.selected = true;
																	b
																			._trigger(
																					"selecting",
																					d,
																					{
																						selecting : e.element
																					});
																	return false
																}
															})
										},
										_mouseDrag : function(i) {
											var c = this;
											this.dragged = true;
											if (this.options.disabled) {
												return
											}
											var e = this.options;
											var d = this.opos[0], h = this.opos[1], b = i.pageX, g = i.pageY;
											if (d > b) {
												var f = b;
												b = d;
												d = f
											}
											if (h > g) {
												var f = g;
												g = h;
												h = f
											}
											this.helper.css({
												left : d,
												top : h,
												width : b - d,
												height : g - h
											});
											this.selectees
													.each(function() {
														var j = a
																.data(this,
																		"selectable-item");
														if (!j
																|| j.element == c.element[0]) {
															return
														}
														var k = false;
														if (e.tolerance == "touch") {
															k = (!(j.left > b
																	|| j.right < d
																	|| j.top > g || j.bottom < h))
														} else {
															if (e.tolerance == "fit") {
																k = (j.left > d
																		&& j.right < b
																		&& j.top > h && j.bottom < g)
															}
														}
														if (k) {
															if (j.selected) {
																j.$element
																		.removeClass("ui-selected");
																j.selected = false
															}
															if (j.unselecting) {
																j.$element
																		.removeClass("ui-unselecting");
																j.unselecting = false
															}
															if (!j.selecting) {
																j.$element
																		.addClass("ui-selecting");
																j.selecting = true;
																c
																		._trigger(
																				"selecting",
																				i,
																				{
																					selecting : j.element
																				})
															}
														} else {
															if (j.selecting) {
																if (i.metaKey
																		&& j.startselected) {
																	j.$element
																			.removeClass("ui-selecting");
																	j.selecting = false;
																	j.$element
																			.addClass("ui-selected");
																	j.selected = true
																} else {
																	j.$element
																			.removeClass("ui-selecting");
																	j.selecting = false;
																	if (j.startselected) {
																		j.$element
																				.addClass("ui-unselecting");
																		j.unselecting = true
																	}
																	c
																			._trigger(
																					"unselecting",
																					i,
																					{
																						unselecting : j.element
																					})
																}
															}
															if (j.selected) {
																if (!i.metaKey
																		&& !j.startselected) {
																	j.$element
																			.removeClass("ui-selected");
																	j.selected = false;
																	j.$element
																			.addClass("ui-unselecting");
																	j.unselecting = true;
																	c
																			._trigger(
																					"unselecting",
																					i,
																					{
																						unselecting : j.element
																					})
																}
															}
														}
													});
											return false
										},
										_mouseStop : function(d) {
											var b = this;
											this.dragged = false;
											var c = this.options;
											a(".ui-unselecting",
													this.element[0])
													.each(
															function() {
																var e = a
																		.data(
																				this,
																				"selectable-item");
																e.$element
																		.removeClass("ui-unselecting");
																e.unselecting = false;
																e.startselected = false;
																b
																		._trigger(
																				"unselected",
																				d,
																				{
																					unselected : e.element
																				})
															});
											a(".ui-selecting", this.element[0])
													.each(
															function() {
																var e = a
																		.data(
																				this,
																				"selectable-item");
																e.$element
																		.removeClass(
																				"ui-selecting")
																		.addClass(
																				"ui-selected");
																e.selecting = false;
																e.selected = true;
																e.startselected = true;
																b
																		._trigger(
																				"selected",
																				d,
																				{
																					selected : e.element
																				})
															});
											this._trigger("stop", d);
											this.helper.remove();
											return false
										}
									}));
	a.extend(a.ui.selectable, {
		version : "1.7.2",
		defaults : {
			appendTo : "body",
			autoRefresh : true,
			cancel : ":input,option",
			delay : 0,
			distance : 0,
			filter : "*",
			tolerance : "touch"
		}
	})
})(jQuery);;/*
			 * jQuery UI Dialog 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Dialog
			 * 
			 * Depends: ui.core.js ui.draggable.js ui.resizable.js
			 */
(function(c) {
	var b = {
		dragStart : "start.draggable",
		drag : "drag.draggable",
		dragStop : "stop.draggable",
		maxHeight : "maxHeight.resizable",
		minHeight : "minHeight.resizable",
		maxWidth : "maxWidth.resizable",
		minWidth : "minWidth.resizable",
		resizeStart : "start.resizable",
		resize : "drag.resizable",
		resizeStop : "stop.resizable"
	}, a = "ui-dialog ui-widget ui-widget-content ui-corner-all ";
	c
			.widget(
					"ui.dialog",
					{
						_init : function() {
							this.originalTitle = this.element.attr("title");
							var l = this, m = this.options, j = m.title
									|| this.originalTitle || "&nbsp;", e = c.ui.dialog
									.getTitleId(this.element), k = (this.uiDialog = c("<div/>"))
									.appendTo(document.body)
									.hide()
									.addClass(a + m.dialogClass)
									.css({
										position : "absolute",
										overflow : "hidden",
										zIndex : m.zIndex
									})
									.attr("tabIndex", -1)
									.css("outline", 0)
									.keydown(
											function(n) {
												(m.closeOnEscape
														&& n.keyCode
														&& n.keyCode == c.ui.keyCode.ESCAPE && l
														.close(n))
											}).attr({
										role : "dialog",
										"aria-labelledby" : e
									}).mousedown(function(n) {
										l.moveToTop(false, n)
									}), g = this.element.show().removeAttr(
									"title").addClass(
									"ui-dialog-content ui-widget-content")
									.appendTo(k), f = (this.uiDialogTitlebar = c("<div></div>"))
									.addClass(
											"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix")
									.prependTo(k), i = c('<a href="#"/>')
									.addClass(
											"ui-dialog-titlebar-close ui-corner-all")
									.attr("role", "button").hover(function() {
										i.addClass("ui-state-hover")
									}, function() {
										i.removeClass("ui-state-hover")
									}).focus(function() {
										i.addClass("ui-state-focus")
									}).blur(function() {
										i.removeClass("ui-state-focus")
									}).mousedown(function(n) {
										n.stopPropagation()
									}).click(function(n) {
										l.close(n);
										return false
									}).appendTo(f), h = (this.uiDialogTitlebarCloseText = c("<span/>"))
									.addClass("ui-icon ui-icon-closethick")
									.text(m.closeText).appendTo(i), d = c(
									"<span/>").addClass("ui-dialog-title")
									.attr("id", e).html(j).prependTo(f);
							f.find("*").add(f).disableSelection();
							(m.draggable && c.fn.draggable && this
									._makeDraggable());
							(m.resizable && c.fn.resizable && this
									._makeResizable());
							this._createButtons(m.buttons);
							this._isOpen = false;
							(m.bgiframe && c.fn.bgiframe && k.bgiframe());
							(m.autoOpen && this.open())
						},
						destroy : function() {
							(this.overlay && this.overlay.destroy());
							this.uiDialog.hide();
							this.element
									.unbind(".dialog")
									.removeData("dialog")
									.removeClass(
											"ui-dialog-content ui-widget-content")
									.hide().appendTo("body");
							this.uiDialog.remove();
							(this.originalTitle && this.element.attr("title",
									this.originalTitle))
						},
						close : function(f) {
							var d = this;
							if (false === d._trigger("beforeclose", f)) {
								return
							}
							(d.overlay && d.overlay.destroy());
							d.uiDialog.unbind("keypress.ui-dialog");
							(d.options.hide ? d.uiDialog.hide(d.options.hide,
									function() {
										d._trigger("close", f)
									}) : d.uiDialog.hide()
									&& d._trigger("close", f));
							c.ui.dialog.overlay.resize();
							d._isOpen = false;
							if (d.options.modal) {
								var e = 0;
								c(".ui-dialog").each(function() {
									if (this != d.uiDialog[0]) {
										e = Math.max(e, c(this).css("z-index"))
									}
								});
								c.ui.dialog.maxZ = e
							}
						},
						isOpen : function() {
							return this._isOpen
						},
						moveToTop : function(f, e) {
							if ((this.options.modal && !f)
									|| (!this.options.stack && !this.options.modal)) {
								return this._trigger("focus", e)
							}
							if (this.options.zIndex > c.ui.dialog.maxZ) {
								c.ui.dialog.maxZ = this.options.zIndex
							}
							(this.overlay && this.overlay.$el
									.css(
											"z-index",
											c.ui.dialog.overlay.maxZ = ++c.ui.dialog.maxZ));
							var d = {
								scrollTop : this.element.attr("scrollTop"),
								scrollLeft : this.element.attr("scrollLeft")
							};
							this.uiDialog.css("z-index", ++c.ui.dialog.maxZ);
							this.element.attr(d);
							this._trigger("focus", e)
						},
						open : function() {
							if (this._isOpen) {
								return
							}
							var e = this.options, d = this.uiDialog;
							this.overlay = e.modal ? new c.ui.dialog.overlay(
									this) : null;
							(d.next().length && d.appendTo("body"));
							this._size();
							this._position(e.position);
							d.show(e.show);
							this.moveToTop(true);
							(e.modal && d.bind("keypress.ui-dialog",
									function(h) {
										if (h.keyCode != c.ui.keyCode.TAB) {
											return
										}
										var g = c(":tabbable", this), i = g
												.filter(":first")[0], f = g
												.filter(":last")[0];
										if (h.target == f && !h.shiftKey) {
											setTimeout(function() {
												i.focus()
											}, 1)
										} else {
											if (h.target == i && h.shiftKey) {
												setTimeout(function() {
													f.focus()
												}, 1)
											}
										}
									}));
							c([])
									.add(
											d
													.find(".ui-dialog-content :tabbable:first"))
									.add(
											d
													.find(".ui-dialog-buttonpane :tabbable:first"))
									.add(d).filter(":first").focus();
							this._trigger("open");
							this._isOpen = true
						},
						_createButtons : function(g) {
							var f = this, d = false, e = c("<div></div>")
									.addClass(
											"ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");
							this.uiDialog.find(".ui-dialog-buttonpane")
									.remove();
							(typeof g == "object" && g !== null && c.each(g,
									function() {
										return !(d = true)
									}));
							if (d) {
								c
										.each(
												g,
												function(h, i) {
													c(
															'<button type="button"></button>')
															.addClass(
																	"ui-state-default ui-corner-all")
															.text(h)
															.click(
																	function() {
																		i
																				.apply(
																						f.element[0],
																						arguments)
																	})
															.hover(
																	function() {
																		c(this)
																				.addClass(
																						"ui-state-hover")
																	},
																	function() {
																		c(this)
																				.removeClass(
																						"ui-state-hover")
																	})
															.focus(
																	function() {
																		c(this)
																				.addClass(
																						"ui-state-focus")
																	})
															.blur(
																	function() {
																		c(this)
																				.removeClass(
																						"ui-state-focus")
																	})
															.appendTo(e)
												});
								e.appendTo(this.uiDialog)
							}
						},
						_makeDraggable : function() {
							var d = this, f = this.options, e;
							this.uiDialog.draggable({
								cancel : ".ui-dialog-content",
								handle : ".ui-dialog-titlebar",
								containment : "document",
								start : function() {
									e = f.height;
									c(this).height(c(this).height()).addClass(
											"ui-dialog-dragging");
									(f.dragStart && f.dragStart.apply(
											d.element[0], arguments))
								},
								drag : function() {
									(f.drag && f.drag.apply(d.element[0],
											arguments))
								},
								stop : function() {
									c(this).removeClass("ui-dialog-dragging")
											.height(e);
									(f.dragStop && f.dragStop.apply(
											d.element[0], arguments));
									c.ui.dialog.overlay.resize()
								}
							})
						},
						_makeResizable : function(g) {
							g = (g === undefined ? this.options.resizable : g);
							var d = this, f = this.options, e = typeof g == "string" ? g
									: "n,e,s,w,se,sw,ne,nw";
							this.uiDialog.resizable(
									{
										cancel : ".ui-dialog-content",
										alsoResize : this.element,
										maxWidth : f.maxWidth,
										maxHeight : f.maxHeight,
										minWidth : f.minWidth,
										minHeight : f.minHeight,
										start : function() {
											c(this).addClass(
													"ui-dialog-resizing");
											(f.resizeStart && f.resizeStart
													.apply(d.element[0],
															arguments))
										},
										resize : function() {
											(f.resize && f.resize.apply(
													d.element[0], arguments))
										},
										handles : e,
										stop : function() {
											c(this).removeClass(
													"ui-dialog-resizing");
											f.height = c(this).height();
											f.width = c(this).width();
											(f.resizeStop && f.resizeStop
													.apply(d.element[0],
															arguments));
											c.ui.dialog.overlay.resize()
										}
									}).find(".ui-resizable-se").addClass(
									"ui-icon ui-icon-grip-diagonal-se")
						},
						_position : function(i) {
							var e = c(window), f = c(document), g = f
									.scrollTop(), d = f.scrollLeft(), h = g;
							if (c.inArray(i, [ "center", "top", "right",
									"bottom", "left" ]) >= 0) {
								i = [
										i == "right" || i == "left" ? i
												: "center",
										i == "top" || i == "bottom" ? i
												: "middle" ]
							}
							if (i.constructor != Array) {
								i = [ "center", "middle" ]
							}
							if (i[0].constructor == Number) {
								d += i[0]
							} else {
								switch (i[0]) {
								case "left":
									d += 0;
									break;
								case "right":
									d += e.width() - this.uiDialog.outerWidth();
									break;
								default:
								case "center":
									d += (e.width() - this.uiDialog
											.outerWidth()) / 2
								}
							}
							if (i[1].constructor == Number) {
								g += i[1]
							} else {
								switch (i[1]) {
								case "top":
									g += 0;
									break;
								case "bottom":
									g += e.height()
											- this.uiDialog.outerHeight();
									break;
								default:
								case "middle":
									g += (e.height() - this.uiDialog
											.outerHeight()) / 2
								}
							}
							g = Math.max(g, h);
							this.uiDialog.css({
								top : g,
								left : d
							})
						},
						_setData : function(e, f) {
							(b[e] && this.uiDialog.data(b[e], f));
							switch (e) {
							case "buttons":
								this._createButtons(f);
								break;
							case "closeText":
								this.uiDialogTitlebarCloseText.text(f);
								break;
							case "dialogClass":
								this.uiDialog.removeClass(
										this.options.dialogClass).addClass(
										a + f);
								break;
							case "draggable":
								(f ? this._makeDraggable() : this.uiDialog
										.draggable("destroy"));
								break;
							case "height":
								this.uiDialog.height(f);
								break;
							case "position":
								this._position(f);
								break;
							case "resizable":
								var d = this.uiDialog, g = this.uiDialog
										.is(":data(resizable)");
								(g && !f && d.resizable("destroy"));
								(g && typeof f == "string" && d.resizable(
										"option", "handles", f));
								(g || this._makeResizable(f));
								break;
							case "title":
								c(".ui-dialog-title", this.uiDialogTitlebar)
										.html(f || "&nbsp;");
								break;
							case "width":
								this.uiDialog.width(f);
								break
							}
							c.widget.prototype._setData.apply(this, arguments)
						},
						_size : function() {
							var e = this.options;
							this.element.css({
								height : 0,
								minHeight : 0,
								width : "auto"
							});
							var d = this.uiDialog.css({
								height : "auto",
								width : e.width
							}).height();
							this.element.css({
								minHeight : Math.max(e.minHeight - d, 0),
								height : e.height == "auto" ? "auto" : Math
										.max(e.height - d, 0)
							})
						}
					});
	c.extend(c.ui.dialog, {
		version : "1.7.2",
		defaults : {
			autoOpen : true,
			bgiframe : false,
			buttons : {},
			closeOnEscape : true,
			closeText : "close",
			dialogClass : "",
			draggable : true,
			hide : null,
			height : "auto",
			maxHeight : false,
			maxWidth : false,
			minHeight : 150,
			minWidth : 150,
			modal : false,
			position : "center",
			resizable : true,
			show : null,
			stack : true,
			title : "",
			width : 300,
			zIndex : 1000
		},
		getter : "isOpen",
		uuid : 0,
		maxZ : 0,
		getTitleId : function(d) {
			return "ui-dialog-title-" + (d.attr("id") || ++this.uuid)
		},
		overlay : function(d) {
			this.$el = c.ui.dialog.overlay.create(d)
		}
	});
	c.extend(c.ui.dialog.overlay, {
		instances : [],
		maxZ : 0,
		events : c.map(
				"focus,mousedown,mouseup,keydown,keypress,click".split(","),
				function(d) {
					return d + ".dialog-overlay"
				}).join(" "),
		create : function(e) {
			if (this.instances.length === 0) {
				setTimeout(function() {
					if (c.ui.dialog.overlay.instances.length) {
						c(document).bind(
								c.ui.dialog.overlay.events,
								function(f) {
									var g = c(f.target).parents(".ui-dialog")
											.css("zIndex") || 0;
									return (g > c.ui.dialog.overlay.maxZ)
								})
					}
				}, 1);
				c(document).bind(
						"keydown.dialog-overlay",
						function(f) {
							(e.options.closeOnEscape && f.keyCode
									&& f.keyCode == c.ui.keyCode.ESCAPE && e
									.close(f))
						});
				c(window).bind("resize.dialog-overlay",
						c.ui.dialog.overlay.resize)
			}
			var d = c("<div></div>").appendTo(document.body).addClass(
					"ui-widget-overlay").css({
				width : this.width(),
				height : this.height()
			});
			(e.options.bgiframe && c.fn.bgiframe && d.bgiframe());
			this.instances.push(d);
			return d
		},
		destroy : function(d) {
			this.instances.splice(c.inArray(this.instances, d), 1);
			if (this.instances.length === 0) {
				c([ document, window ]).unbind(".dialog-overlay")
			}
			d.remove();
			var e = 0;
			c.each(this.instances, function() {
				e = Math.max(e, this.css("z-index"))
			});
			this.maxZ = e
		},
		height : function() {
			if (c.browser.msie && c.browser.version < 7) {
				var e = Math.max(document.documentElement.scrollHeight,
						document.body.scrollHeight);
				var d = Math.max(document.documentElement.offsetHeight,
						document.body.offsetHeight);
				if (e < d) {
					return c(window).height() + "px"
				} else {
					return e + "px"
				}
			} else {
				return c(document).height() + "px"
			}
		},
		width : function() {
			if (c.browser.msie && c.browser.version < 7) {
				var d = Math.max(document.documentElement.scrollWidth,
						document.body.scrollWidth);
				var e = Math.max(document.documentElement.offsetWidth,
						document.body.offsetWidth);
				if (d < e) {
					return c(window).width() + "px"
				} else {
					return d + "px"
				}
			} else {
				return c(document).width() + "px"
			}
		},
		resize : function() {
			var d = c([]);
			c.each(c.ui.dialog.overlay.instances, function() {
				d = d.add(this)
			});
			d.css({
				width : 0,
				height : 0
			}).css({
				width : c.ui.dialog.overlay.width(),
				height : c.ui.dialog.overlay.height()
			})
		}
	});
	c.extend(c.ui.dialog.overlay.prototype, {
		destroy : function() {
			c.ui.dialog.overlay.destroy(this.$el)
		}
	})
})(jQuery);;/*
			 * jQuery UI Datepicker 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Datepicker
			 * 
			 * Depends: ui.core.js
			 */
(function($) {
	$.extend($.ui, {
		datepicker : {
			version : "1.7.2"
		}
	});
	var PROP_NAME = "datepicker";
	function Datepicker() {
		this.debug = false;
		this._curInst = null;
		this._keyEvent = false;
		this._disabledInputs = [];
		this._datepickerShowing = false;
		this._inDialog = false;
		this._mainDivId = "ui-datepicker-div";
		this._inlineClass = "ui-datepicker-inline";
		this._appendClass = "ui-datepicker-append";
		this._triggerClass = "ui-datepicker-trigger";
		this._dialogClass = "ui-datepicker-dialog";
		this._disableClass = "ui-datepicker-disabled";
		this._unselectableClass = "ui-datepicker-unselectable";
		this._currentClass = "ui-datepicker-current-day";
		this._dayOverClass = "ui-datepicker-days-cell-over";
		this.regional = [];
		this.regional[""] = {
			closeText : "Done",
			prevText : "Prev",
			nextText : "Next",
			currentText : "Today",
			monthNames : [ "January", "February", "March", "April", "May",
					"June", "July", "August", "September", "October",
					"November", "December" ],
			monthNamesShort : [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
					"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
			dayNames : [ "Sunday", "Monday", "Tuesday", "Wednesday",
					"Thursday", "Friday", "Saturday" ],
			dayNamesShort : [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
			dayNamesMin : [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ],
			dateFormat : "mm/dd/yy",
			firstDay : 0,
			isRTL : false
		};
		this._defaults = {
			showOn : "focus",
			showAnim : "show",
			showOptions : {},
			defaultDate : null,
			appendText : "",
			buttonText : "...",
			buttonImage : "",
			buttonImageOnly : false,
			hideIfNoPrevNext : false,
			navigationAsDateFormat : false,
			gotoCurrent : false,
			changeMonth : false,
			changeYear : false,
			showMonthAfterYear : false,
			yearRange : "-10:+10",
			showOtherMonths : false,
			calculateWeek : this.iso8601Week,
			shortYearCutoff : "+10",
			minDate : null,
			maxDate : null,
			duration : "normal",
			beforeShowDay : null,
			beforeShow : null,
			onSelect : null,
			onChangeMonthYear : null,
			onClose : null,
			numberOfMonths : 1,
			showCurrentAtPos : 0,
			stepMonths : 1,
			stepBigMonths : 12,
			altField : "",
			altFormat : "",
			constrainInput : true,
			showButtonPanel : false
		};
		$.extend(this._defaults, this.regional[""]);
		this.dpDiv = $('<div id="'
				+ this._mainDivId
				+ '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')
	}
	$
			.extend(
					Datepicker.prototype,
					{
						markerClassName : "hasDatepicker",
						log : function() {
							if (this.debug) {
								console.log.apply("", arguments)
							}
						},
						setDefaults : function(settings) {
							extendRemove(this._defaults, settings || {});
							return this
						},
						_attachDatepicker : function(target, settings) {
							var inlineSettings = null;
							for ( var attrName in this._defaults) {
								var attrValue = target.getAttribute("date:"
										+ attrName);
								if (attrValue) {
									inlineSettings = inlineSettings || {};
									try {
										inlineSettings[attrName] = eval(attrValue)
									} catch (err) {
										inlineSettings[attrName] = attrValue
									}
								}
							}
							var nodeName = target.nodeName.toLowerCase();
							var inline = (nodeName == "div" || nodeName == "span");
							if (!target.id) {
								target.id = "dp" + (++this.uuid)
							}
							var inst = this._newInst($(target), inline);
							inst.settings = $.extend({}, settings || {},
									inlineSettings || {});
							if (nodeName == "input") {
								this._connectDatepicker(target, inst)
							} else {
								if (inline) {
									this._inlineDatepicker(target, inst)
								}
							}
						},
						_newInst : function(target, inline) {
							var id = target[0].id.replace(/([:\[\]\.])/g,
									"\\\\$1");
							return {
								id : id,
								input : target,
								selectedDay : 0,
								selectedMonth : 0,
								selectedYear : 0,
								drawMonth : 0,
								drawYear : 0,
								inline : inline,
								dpDiv : (!inline ? this.dpDiv
										: $('<div class="'
												+ this._inlineClass
												+ ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
							}
						},
						_connectDatepicker : function(target, inst) {
							var input = $(target);
							inst.append = $([]);
							inst.trigger = $([]);
							if (input.hasClass(this.markerClassName)) {
								return
							}
							var appendText = this._get(inst, "appendText");
							var isRTL = this._get(inst, "isRTL");
							if (appendText) {
								inst.append = $('<span class="'
										+ this._appendClass + '">' + appendText
										+ "</span>");
								input[isRTL ? "before" : "after"](inst.append)
							}
							var showOn = this._get(inst, "showOn");
							if (showOn == "focus" || showOn == "both") {
								input.focus(this._showDatepicker)
							}
							if (showOn == "button" || showOn == "both") {
								var buttonText = this._get(inst, "buttonText");
								var buttonImage = this
										._get(inst, "buttonImage");
								inst.trigger = $(this._get(inst,
										"buttonImageOnly") ? $("<img/>")
										.addClass(this._triggerClass).attr({
											src : buttonImage,
											alt : buttonText,
											title : buttonText
										}) : $(
										'<button type="button"></button>')
										.addClass(this._triggerClass).html(
												buttonImage == "" ? buttonText
														: $("<img/>").attr({
															src : buttonImage,
															alt : buttonText,
															title : buttonText
														})));
								input[isRTL ? "before" : "after"](inst.trigger);
								inst.trigger
										.click(function() {
											if ($.datepicker._datepickerShowing
													&& $.datepicker._lastInput == target) {
												$.datepicker._hideDatepicker()
											} else {
												$.datepicker
														._showDatepicker(target)
											}
											return false
										})
							}
							input.addClass(this.markerClassName).keydown(
									this._doKeyDown).keypress(this._doKeyPress)
									.bind("setData.datepicker",
											function(event, key, value) {
												inst.settings[key] = value
											}).bind("getData.datepicker",
											function(event, key) {
												return this._get(inst, key)
											});
							$.data(target, PROP_NAME, inst)
						},
						_inlineDatepicker : function(target, inst) {
							var divSpan = $(target);
							if (divSpan.hasClass(this.markerClassName)) {
								return
							}
							divSpan.addClass(this.markerClassName).append(
									inst.dpDiv).bind("setData.datepicker",
									function(event, key, value) {
										inst.settings[key] = value
									}).bind("getData.datepicker",
									function(event, key) {
										return this._get(inst, key)
									});
							$.data(target, PROP_NAME, inst);
							this._setDate(inst, this._getDefaultDate(inst));
							this._updateDatepicker(inst);
							this._updateAlternate(inst)
						},
						_dialogDatepicker : function(input, dateText, onSelect,
								settings, pos) {
							var inst = this._dialogInst;
							if (!inst) {
								var id = "dp" + (++this.uuid);
								this._dialogInput = $('<input type="text" id="'
										+ id
										+ '" size="1" style="position: absolute; top: -100px;"/>');
								this._dialogInput.keydown(this._doKeyDown);
								$("body").append(this._dialogInput);
								inst = this._dialogInst = this._newInst(
										this._dialogInput, false);
								inst.settings = {};
								$.data(this._dialogInput[0], PROP_NAME, inst)
							}
							extendRemove(inst.settings, settings || {});
							this._dialogInput.val(dateText);
							this._pos = (pos ? (pos.length ? pos : [ pos.pageX,
									pos.pageY ]) : null);
							if (!this._pos) {
								var browserWidth = window.innerWidth
										|| document.documentElement.clientWidth
										|| document.body.clientWidth;
								var browserHeight = window.innerHeight
										|| document.documentElement.clientHeight
										|| document.body.clientHeight;
								var scrollX = document.documentElement.scrollLeft
										|| document.body.scrollLeft;
								var scrollY = document.documentElement.scrollTop
										|| document.body.scrollTop;
								this._pos = [
										(browserWidth / 2) - 100 + scrollX,
										(browserHeight / 2) - 150 + scrollY ]
							}
							this._dialogInput.css("left", this._pos[0] + "px")
									.css("top", this._pos[1] + "px");
							inst.settings.onSelect = onSelect;
							this._inDialog = true;
							this.dpDiv.addClass(this._dialogClass);
							this._showDatepicker(this._dialogInput[0]);
							if ($.blockUI) {
								$.blockUI(this.dpDiv)
							}
							$.data(this._dialogInput[0], PROP_NAME, inst);
							return this
						},
						_destroyDatepicker : function(target) {
							var $target = $(target);
							var inst = $.data(target, PROP_NAME);
							if (!$target.hasClass(this.markerClassName)) {
								return
							}
							var nodeName = target.nodeName.toLowerCase();
							$.removeData(target, PROP_NAME);
							if (nodeName == "input") {
								inst.append.remove();
								inst.trigger.remove();
								$target.removeClass(this.markerClassName)
										.unbind("focus", this._showDatepicker)
										.unbind("keydown", this._doKeyDown)
										.unbind("keypress", this._doKeyPress)
							} else {
								if (nodeName == "div" || nodeName == "span") {
									$target.removeClass(this.markerClassName)
											.empty()
								}
							}
						},
						_enableDatepicker : function(target) {
							var $target = $(target);
							var inst = $.data(target, PROP_NAME);
							if (!$target.hasClass(this.markerClassName)) {
								return
							}
							var nodeName = target.nodeName.toLowerCase();
							if (nodeName == "input") {
								target.disabled = false;
								inst.trigger.filter("button").each(function() {
									this.disabled = false
								}).end().filter("img").css({
									opacity : "1.0",
									cursor : ""
								})
							} else {
								if (nodeName == "div" || nodeName == "span") {
									var inline = $target.children("."
											+ this._inlineClass);
									inline.children().removeClass(
											"ui-state-disabled")
								}
							}
							this._disabledInputs = $.map(this._disabledInputs,
									function(value) {
										return (value == target ? null : value)
									})
						},
						_disableDatepicker : function(target) {
							var $target = $(target);
							var inst = $.data(target, PROP_NAME);
							if (!$target.hasClass(this.markerClassName)) {
								return
							}
							var nodeName = target.nodeName.toLowerCase();
							if (nodeName == "input") {
								target.disabled = true;
								inst.trigger.filter("button").each(function() {
									this.disabled = true
								}).end().filter("img").css({
									opacity : "0.5",
									cursor : "default"
								})
							} else {
								if (nodeName == "div" || nodeName == "span") {
									var inline = $target.children("."
											+ this._inlineClass);
									inline.children().addClass(
											"ui-state-disabled")
								}
							}
							this._disabledInputs = $.map(this._disabledInputs,
									function(value) {
										return (value == target ? null : value)
									});
							this._disabledInputs[this._disabledInputs.length] = target
						},
						_isDisabledDatepicker : function(target) {
							if (!target) {
								return false
							}
							for ( var i = 0; i < this._disabledInputs.length; i++) {
								if (this._disabledInputs[i] == target) {
									return true
								}
							}
							return false
						},
						_getInst : function(target) {
							try {
								return $.data(target, PROP_NAME)
							} catch (err) {
								throw "Missing instance data for this datepicker"
							}
						},
						_optionDatepicker : function(target, name, value) {
							var inst = this._getInst(target);
							if (arguments.length == 2
									&& typeof name == "string") {
								return (name == "defaults" ? $.extend({},
										$.datepicker._defaults)
										: (inst ? (name == "all" ? $.extend({},
												inst.settings) : this._get(
												inst, name)) : null))
							}
							var settings = name || {};
							if (typeof name == "string") {
								settings = {};
								settings[name] = value
							}
							if (inst) {
								if (this._curInst == inst) {
									this._hideDatepicker(null)
								}
								var date = this._getDateDatepicker(target);
								extendRemove(inst.settings, settings);
								this._setDateDatepicker(target, date);
								this._updateDatepicker(inst)
							}
						},
						_changeDatepicker : function(target, name, value) {
							this._optionDatepicker(target, name, value)
						},
						_refreshDatepicker : function(target) {
							var inst = this._getInst(target);
							if (inst) {
								this._updateDatepicker(inst)
							}
						},
						_setDateDatepicker : function(target, date, endDate) {
							var inst = this._getInst(target);
							if (inst) {
								this._setDate(inst, date, endDate);
								this._updateDatepicker(inst);
								this._updateAlternate(inst)
							}
						},
						_getDateDatepicker : function(target) {
							var inst = this._getInst(target);
							if (inst && !inst.inline) {
								this._setDateFromField(inst)
							}
							return (inst ? this._getDate(inst) : null)
						},
						_doKeyDown : function(event) {
							var inst = $.datepicker._getInst(event.target);
							var handled = true;
							var isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
							inst._keyEvent = true;
							if ($.datepicker._datepickerShowing) {
								switch (event.keyCode) {
								case 9:
									$.datepicker._hideDatepicker(null, "");
									break;
								case 13:
									var sel = $("td."
											+ $.datepicker._dayOverClass
											+ ", td."
											+ $.datepicker._currentClass,
											inst.dpDiv);
									if (sel[0]) {
										$.datepicker._selectDay(event.target,
												inst.selectedMonth,
												inst.selectedYear, sel[0])
									} else {
										$.datepicker._hideDatepicker(null,
												$.datepicker._get(inst,
														"duration"))
									}
									return false;
									break;
								case 27:
									$.datepicker
											._hideDatepicker(null, $.datepicker
													._get(inst, "duration"));
									break;
								case 33:
									$.datepicker
											._adjustDate(
													event.target,
													(event.ctrlKey ? -$.datepicker
															._get(inst,
																	"stepBigMonths")
															: -$.datepicker
																	._get(inst,
																			"stepMonths")),
													"M");
									break;
								case 34:
									$.datepicker
											._adjustDate(
													event.target,
													(event.ctrlKey ? +$.datepicker
															._get(inst,
																	"stepBigMonths")
															: +$.datepicker
																	._get(inst,
																			"stepMonths")),
													"M");
									break;
								case 35:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._clearDate(event.target)
									}
									handled = event.ctrlKey || event.metaKey;
									break;
								case 36:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._gotoToday(event.target)
									}
									handled = event.ctrlKey || event.metaKey;
									break;
								case 37:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._adjustDate(event.target,
												(isRTL ? +1 : -1), "D")
									}
									handled = event.ctrlKey || event.metaKey;
									if (event.originalEvent.altKey) {
										$.datepicker
												._adjustDate(
														event.target,
														(event.ctrlKey ? -$.datepicker
																._get(inst,
																		"stepBigMonths")
																: -$.datepicker
																		._get(
																				inst,
																				"stepMonths")),
														"M")
									}
									break;
								case 38:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._adjustDate(event.target,
												-7, "D")
									}
									handled = event.ctrlKey || event.metaKey;
									break;
								case 39:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._adjustDate(event.target,
												(isRTL ? -1 : +1), "D")
									}
									handled = event.ctrlKey || event.metaKey;
									if (event.originalEvent.altKey) {
										$.datepicker
												._adjustDate(
														event.target,
														(event.ctrlKey ? +$.datepicker
																._get(inst,
																		"stepBigMonths")
																: +$.datepicker
																		._get(
																				inst,
																				"stepMonths")),
														"M")
									}
									break;
								case 40:
									if (event.ctrlKey || event.metaKey) {
										$.datepicker._adjustDate(event.target,
												+7, "D")
									}
									handled = event.ctrlKey || event.metaKey;
									break;
								default:
									handled = false
								}
							} else {
								if (event.keyCode == 36 && event.ctrlKey) {
									$.datepicker._showDatepicker(this)
								} else {
									handled = false
								}
							}
							if (handled) {
								event.preventDefault();
								event.stopPropagation()
							}
						},
						_doKeyPress : function(event) {
							var inst = $.datepicker._getInst(event.target);
							if ($.datepicker._get(inst, "constrainInput")) {
								var chars = $.datepicker
										._possibleChars($.datepicker._get(inst,
												"dateFormat"));
								var chr = String
										.fromCharCode(event.charCode == undefined ? event.keyCode
												: event.charCode);
								return event.ctrlKey
										|| (chr < " " || !chars || chars
												.indexOf(chr) > -1)
							}
						},
						_showDatepicker : function(input) {
							input = input.target || input;
							if (input.nodeName.toLowerCase() != "input") {
								input = $("input", input.parentNode)[0]
							}
							if ($.datepicker._isDisabledDatepicker(input)
									|| $.datepicker._lastInput == input) {
								return
							}
							var inst = $.datepicker._getInst(input);
							var beforeShow = $.datepicker._get(inst,
									"beforeShow");
							extendRemove(inst.settings,
									(beforeShow ? beforeShow.apply(input, [
											input, inst ]) : {}));
							$.datepicker._hideDatepicker(null, "");
							$.datepicker._lastInput = input;
							$.datepicker._setDateFromField(inst);
							if ($.datepicker._inDialog) {
								input.value = ""
							}
							if (!$.datepicker._pos) {
								$.datepicker._pos = $.datepicker
										._findPos(input);
								$.datepicker._pos[1] += input.offsetHeight
							}
							var isFixed = false;
							$(input).parents().each(function() {
								isFixed |= $(this).css("position") == "fixed";
								return !isFixed
							});
							if (isFixed && $.browser.opera) {
								$.datepicker._pos[0] -= document.documentElement.scrollLeft;
								$.datepicker._pos[1] -= document.documentElement.scrollTop
							}
							var offset = {
								left : $.datepicker._pos[0],
								top : $.datepicker._pos[1]
							};
							$.datepicker._pos = null;
							inst.rangeStart = null;
							inst.dpDiv.css({
								position : "absolute",
								display : "block",
								top : "-1000px"
							});
							$.datepicker._updateDatepicker(inst);
							offset = $.datepicker._checkOffset(inst, offset,
									isFixed);
							inst.dpDiv
									.css({
										position : ($.datepicker._inDialog
												&& $.blockUI ? "static"
												: (isFixed ? "fixed"
														: "absolute")),
										display : "none",
										left : offset.left + "px",
										top : offset.top + "px"
									});
							if (!inst.inline) {
								var showAnim = $.datepicker._get(inst,
										"showAnim")
										|| "show";
								var duration = $.datepicker._get(inst,
										"duration");
								var postProcess = function() {
									$.datepicker._datepickerShowing = true;
									if ($.browser.msie
											&& parseInt($.browser.version, 10) < 7) {
										$("iframe.ui-datepicker-cover").css({
											width : inst.dpDiv.width() + 4,
											height : inst.dpDiv.height() + 4
										})
									}
								};
								if ($.effects && $.effects[showAnim]) {
									inst.dpDiv.show(showAnim, $.datepicker
											._get(inst, "showOptions"),
											duration, postProcess)
								} else {
									inst.dpDiv[showAnim](duration, postProcess)
								}
								if (duration == "") {
									postProcess()
								}
								if (inst.input[0].type != "hidden") {
									inst.input[0].focus()
								}
								$.datepicker._curInst = inst
							}
						},
						_updateDatepicker : function(inst) {
							var dims = {
								width : inst.dpDiv.width() + 4,
								height : inst.dpDiv.height() + 4
							};
							var self = this;
							inst.dpDiv
									.empty()
									.append(this._generateHTML(inst))
									.find("iframe.ui-datepicker-cover")
									.css({
										width : dims.width,
										height : dims.height
									})
									.end()
									.find(
											"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a")
									.bind(
											"mouseout",
											function() {
												$(this).removeClass(
														"ui-state-hover");
												if (this.className
														.indexOf("ui-datepicker-prev") != -1) {
													$(this)
															.removeClass(
																	"ui-datepicker-prev-hover")
												}
												if (this.className
														.indexOf("ui-datepicker-next") != -1) {
													$(this)
															.removeClass(
																	"ui-datepicker-next-hover")
												}
											})
									.bind(
											"mouseover",
											function() {
												if (!self
														._isDisabledDatepicker(inst.inline ? inst.dpDiv
																.parent()[0]
																: inst.input[0])) {
													$(this)
															.parents(
																	".ui-datepicker-calendar")
															.find("a")
															.removeClass(
																	"ui-state-hover");
													$(this).addClass(
															"ui-state-hover");
													if (this.className
															.indexOf("ui-datepicker-prev") != -1) {
														$(this)
																.addClass(
																		"ui-datepicker-prev-hover")
													}
													if (this.className
															.indexOf("ui-datepicker-next") != -1) {
														$(this)
																.addClass(
																		"ui-datepicker-next-hover")
													}
												}
											}).end().find(
											"." + this._dayOverClass + " a")
									.trigger("mouseover").end();
							var numMonths = this._getNumberOfMonths(inst);
							var cols = numMonths[1];
							var width = 17;
							if (cols > 1) {
								inst.dpDiv.addClass(
										"ui-datepicker-multi-" + cols).css(
										"width", (width * cols) + "em")
							} else {
								inst.dpDiv
										.removeClass(
												"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4")
										.width("")
							}
							inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? "add"
									: "remove")
									+ "Class"]("ui-datepicker-multi");
							inst.dpDiv[(this._get(inst, "isRTL") ? "add"
									: "remove")
									+ "Class"]("ui-datepicker-rtl");
							if (inst.input && inst.input[0].type != "hidden"
									&& inst == $.datepicker._curInst) {
								$(inst.input[0]).focus()
							}
						},
						_checkOffset : function(inst, offset, isFixed) {
							var dpWidth = inst.dpDiv.outerWidth();
							var dpHeight = inst.dpDiv.outerHeight();
							var inputWidth = inst.input ? inst.input
									.outerWidth() : 0;
							var inputHeight = inst.input ? inst.input
									.outerHeight() : 0;
							var viewWidth = (window.innerWidth
									|| document.documentElement.clientWidth || document.body.clientWidth)
									+ $(document).scrollLeft();
							var viewHeight = (window.innerHeight
									|| document.documentElement.clientHeight || document.body.clientHeight)
									+ $(document).scrollTop();
							offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth)
									: 0);
							offset.left -= (isFixed && offset.left == inst.input
									.offset().left) ? $(document).scrollLeft()
									: 0;
							offset.top -= (isFixed && offset.top == (inst.input
									.offset().top + inputHeight)) ? $(document)
									.scrollTop() : 0;
							offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math
									.abs(offset.left + dpWidth - viewWidth)
									: 0;
							offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math
									.abs(offset.top + dpHeight + inputHeight
											* 2 - viewHeight)
									: 0;
							return offset
						},
						_findPos : function(obj) {
							while (obj
									&& (obj.type == "hidden" || obj.nodeType != 1)) {
								obj = obj.nextSibling
							}
							var position = $(obj).offset();
							return [ position.left, position.top ]
						},
						_hideDatepicker : function(input, duration) {
							var inst = this._curInst;
							if (!inst
									|| (input && inst != $.data(input,
											PROP_NAME))) {
								return
							}
							if (inst.stayOpen) {
								this._selectDate("#" + inst.id, this
										._formatDate(inst, inst.currentDay,
												inst.currentMonth,
												inst.currentYear))
							}
							inst.stayOpen = false;
							if (this._datepickerShowing) {
								duration = (duration != null ? duration : this
										._get(inst, "duration"));
								var showAnim = this._get(inst, "showAnim");
								var postProcess = function() {
									$.datepicker._tidyDialog(inst)
								};
								if (duration != "" && $.effects
										&& $.effects[showAnim]) {
									inst.dpDiv.hide(showAnim, $.datepicker
											._get(inst, "showOptions"),
											duration, postProcess)
								} else {
									inst.dpDiv[(duration == "" ? "hide"
											: (showAnim == "slideDown" ? "slideUp"
													: (showAnim == "fadeIn" ? "fadeOut"
															: "hide")))](
											duration, postProcess)
								}
								if (duration == "") {
									this._tidyDialog(inst)
								}
								var onClose = this._get(inst, "onClose");
								if (onClose) {
									onClose
											.apply(
													(inst.input ? inst.input[0]
															: null),
													[
															(inst.input ? inst.input
																	.val()
																	: ""), inst ])
								}
								this._datepickerShowing = false;
								this._lastInput = null;
								if (this._inDialog) {
									this._dialogInput.css({
										position : "absolute",
										left : "0",
										top : "-100px"
									});
									if ($.blockUI) {
										$.unblockUI();
										$("body").append(this.dpDiv)
									}
								}
								this._inDialog = false
							}
							this._curInst = null
						},
						_tidyDialog : function(inst) {
							inst.dpDiv.removeClass(this._dialogClass).unbind(
									".ui-datepicker-calendar")
						},
						_checkExternalClick : function(event) {
							if (!$.datepicker._curInst) {
								return
							}
							var $target = $(event.target);
							if (($target.parents("#" + $.datepicker._mainDivId).length == 0)
									&& !$target
											.hasClass($.datepicker.markerClassName)
									&& !$target
											.hasClass($.datepicker._triggerClass)
									&& $.datepicker._datepickerShowing
									&& !($.datepicker._inDialog && $.blockUI)) {
								$.datepicker._hideDatepicker(null, "")
							}
						},
						_adjustDate : function(id, offset, period) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							if (this._isDisabledDatepicker(target[0])) {
								return
							}
							this._adjustInstDate(inst, offset
									+ (period == "M" ? this._get(inst,
											"showCurrentAtPos") : 0), period);
							this._updateDatepicker(inst)
						},
						_gotoToday : function(id) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							if (this._get(inst, "gotoCurrent")
									&& inst.currentDay) {
								inst.selectedDay = inst.currentDay;
								inst.drawMonth = inst.selectedMonth = inst.currentMonth;
								inst.drawYear = inst.selectedYear = inst.currentYear
							} else {
								var date = new Date();
								inst.selectedDay = date.getDate();
								inst.drawMonth = inst.selectedMonth = date
										.getMonth();
								inst.drawYear = inst.selectedYear = date
										.getFullYear()
							}
							this._notifyChange(inst);
							this._adjustDate(target)
						},
						_selectMonthYear : function(id, select, period) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							inst._selectingMonthYear = false;
							inst["selected"
									+ (period == "M" ? "Month" : "Year")] = inst["draw"
									+ (period == "M" ? "Month" : "Year")] = parseInt(
									select.options[select.selectedIndex].value,
									10);
							this._notifyChange(inst);
							this._adjustDate(target)
						},
						_clickMonthYear : function(id) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							if (inst.input && inst._selectingMonthYear
									&& !$.browser.msie) {
								inst.input[0].focus()
							}
							inst._selectingMonthYear = !inst._selectingMonthYear
						},
						_selectDay : function(id, month, year, td) {
							var target = $(id);
							if ($(td).hasClass(this._unselectableClass)
									|| this._isDisabledDatepicker(target[0])) {
								return
							}
							var inst = this._getInst(target[0]);
							inst.selectedDay = inst.currentDay = $("a", td)
									.html();
							inst.selectedMonth = inst.currentMonth = month;
							inst.selectedYear = inst.currentYear = year;
							if (inst.stayOpen) {
								inst.endDay = inst.endMonth = inst.endYear = null
							}
							this._selectDate(id, this._formatDate(inst,
									inst.currentDay, inst.currentMonth,
									inst.currentYear));
							if (inst.stayOpen) {
								inst.rangeStart = this
										._daylightSavingAdjust(new Date(
												inst.currentYear,
												inst.currentMonth,
												inst.currentDay));
								this._updateDatepicker(inst)
							}
						},
						_clearDate : function(id) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							inst.stayOpen = false;
							inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
							this._selectDate(target, "")
						},
						_selectDate : function(id, dateStr) {
							var target = $(id);
							var inst = this._getInst(target[0]);
							dateStr = (dateStr != null ? dateStr : this
									._formatDate(inst));
							if (inst.input) {
								inst.input.val(dateStr)
							}
							this._updateAlternate(inst);
							var onSelect = this._get(inst, "onSelect");
							if (onSelect) {
								onSelect.apply((inst.input ? inst.input[0]
										: null), [ dateStr, inst ])
							} else {
								if (inst.input) {
									inst.input.trigger("change")
								}
							}
							if (inst.inline) {
								this._updateDatepicker(inst)
							} else {
								if (!inst.stayOpen) {
									this._hideDatepicker(null, this._get(inst,
											"duration"));
									this._lastInput = inst.input[0];
									if (typeof (inst.input[0]) != "object") {
										inst.input[0].focus()
									}
									this._lastInput = null
								}
							}
						},
						_updateAlternate : function(inst) {
							var altField = this._get(inst, "altField");
							if (altField) {
								var altFormat = this._get(inst, "altFormat")
										|| this._get(inst, "dateFormat");
								var date = this._getDate(inst);
								dateStr = this.formatDate(altFormat, date, this
										._getFormatConfig(inst));
								$(altField).each(function() {
									$(this).val(dateStr)
								})
							}
						},
						noWeekends : function(date) {
							var day = date.getDay();
							return [ (day > 0 && day < 6), "" ]
						},
						iso8601Week : function(date) {
							var checkDate = new Date(date.getFullYear(), date
									.getMonth(), date.getDate());
							var firstMon = new Date(checkDate.getFullYear(),
									1 - 1, 4);
							var firstDay = firstMon.getDay() || 7;
							firstMon.setDate(firstMon.getDate() + 1 - firstDay);
							if (firstDay < 4 && checkDate < firstMon) {
								checkDate.setDate(checkDate.getDate() - 3);
								return $.datepicker.iso8601Week(checkDate)
							} else {
								if (checkDate > new Date(checkDate
										.getFullYear(), 12 - 1, 28)) {
									firstDay = new Date(
											checkDate.getFullYear() + 1, 1 - 1,
											4).getDay() || 7;
									if (firstDay > 4
											&& (checkDate.getDay() || 7) < firstDay - 3) {
										return 1
									}
								}
							}
							return Math
									.floor(((checkDate - firstMon) / 86400000) / 7) + 1
						},
						parseDate : function(format, value, settings) {
							if (format == null || value == null) {
								throw "Invalid arguments"
							}
							value = (typeof value == "object" ? value
									.toString() : value + "");
							if (value == "") {
								return null
							}
							var shortYearCutoff = (settings ? settings.shortYearCutoff
									: null)
									|| this._defaults.shortYearCutoff;
							var dayNamesShort = (settings ? settings.dayNamesShort
									: null)
									|| this._defaults.dayNamesShort;
							var dayNames = (settings ? settings.dayNames : null)
									|| this._defaults.dayNames;
							var monthNamesShort = (settings ? settings.monthNamesShort
									: null)
									|| this._defaults.monthNamesShort;
							var monthNames = (settings ? settings.monthNames
									: null)
									|| this._defaults.monthNames;
							var year = -1;
							var month = -1;
							var day = -1;
							var doy = -1;
							var literal = false;
							var lookAhead = function(match) {
								var matches = (iFormat + 1 < format.length && format
										.charAt(iFormat + 1) == match);
								if (matches) {
									iFormat++
								}
								return matches
							};
							var getNumber = function(match) {
								lookAhead(match);
								var origSize = (match == "@" ? 14
										: (match == "y" ? 4 : (match == "o" ? 3
												: 2)));
								var size = origSize;
								var num = 0;
								while (size > 0 && iValue < value.length
										&& value.charAt(iValue) >= "0"
										&& value.charAt(iValue) <= "9") {
									num = num
											* 10
											+ parseInt(value.charAt(iValue++),
													10);
									size--
								}
								if (size == origSize) {
									throw "Missing number at position "
											+ iValue
								}
								return num
							};
							var getName = function(match, shortNames, longNames) {
								var names = (lookAhead(match) ? longNames
										: shortNames);
								var size = 0;
								for ( var j = 0; j < names.length; j++) {
									size = Math.max(size, names[j].length)
								}
								var name = "";
								var iInit = iValue;
								while (size > 0 && iValue < value.length) {
									name += value.charAt(iValue++);
									for ( var i = 0; i < names.length; i++) {
										if (name == names[i]) {
											return i + 1
										}
									}
									size--
								}
								throw "Unknown name at position " + iInit
							};
							var checkLiteral = function() {
								if (value.charAt(iValue) != format
										.charAt(iFormat)) {
									throw "Unexpected literal at position "
											+ iValue
								}
								iValue++
							};
							var iValue = 0;
							for ( var iFormat = 0; iFormat < format.length; iFormat++) {
								if (literal) {
									if (format.charAt(iFormat) == "'"
											&& !lookAhead("'")) {
										literal = false
									} else {
										checkLiteral()
									}
								} else {
									switch (format.charAt(iFormat)) {
									case "d":
										day = getNumber("d");
										break;
									case "D":
										getName("D", dayNamesShort, dayNames);
										break;
									case "o":
										doy = getNumber("o");
										break;
									case "m":
										month = getNumber("m");
										break;
									case "M":
										month = getName("M", monthNamesShort,
												monthNames);
										break;
									case "y":
										year = getNumber("y");
										break;
									case "@":
										var date = new Date(getNumber("@"));
										year = date.getFullYear();
										month = date.getMonth() + 1;
										day = date.getDate();
										break;
									case "'":
										if (lookAhead("'")) {
											checkLiteral()
										} else {
											literal = true
										}
										break;
									default:
										checkLiteral()
									}
								}
							}
							if (year == -1) {
								year = new Date().getFullYear()
							} else {
								if (year < 100) {
									year += new Date().getFullYear()
											- new Date().getFullYear()
											% 100
											+ (year <= shortYearCutoff ? 0
													: -100)
								}
							}
							if (doy > -1) {
								month = 1;
								day = doy;
								do {
									var dim = this._getDaysInMonth(year,
											month - 1);
									if (day <= dim) {
										break
									}
									month++;
									day -= dim
								} while (true)
							}
							var date = this._daylightSavingAdjust(new Date(
									year, month - 1, day));
							if (date.getFullYear() != year
									|| date.getMonth() + 1 != month
									|| date.getDate() != day) {
								throw "Invalid date"
							}
							return date
						},
						ATOM : "yy-mm-dd",
						COOKIE : "D, dd M yy",
						ISO_8601 : "yy-mm-dd",
						RFC_822 : "D, d M y",
						RFC_850 : "DD, dd-M-y",
						RFC_1036 : "D, d M y",
						RFC_1123 : "D, d M yy",
						RFC_2822 : "D, d M yy",
						RSS : "D, d M y",
						TIMESTAMP : "@",
						W3C : "yy-mm-dd",
						formatDate : function(format, date, settings) {
							if (!date) {
								return ""
							}
							var dayNamesShort = (settings ? settings.dayNamesShort
									: null)
									|| this._defaults.dayNamesShort;
							var dayNames = (settings ? settings.dayNames : null)
									|| this._defaults.dayNames;
							var monthNamesShort = (settings ? settings.monthNamesShort
									: null)
									|| this._defaults.monthNamesShort;
							var monthNames = (settings ? settings.monthNames
									: null)
									|| this._defaults.monthNames;
							var lookAhead = function(match) {
								var matches = (iFormat + 1 < format.length && format
										.charAt(iFormat + 1) == match);
								if (matches) {
									iFormat++
								}
								return matches
							};
							var formatNumber = function(match, value, len) {
								var num = "" + value;
								if (lookAhead(match)) {
									while (num.length < len) {
										num = "0" + num
									}
								}
								return num
							};
							var formatName = function(match, value, shortNames,
									longNames) {
								return (lookAhead(match) ? longNames[value]
										: shortNames[value])
							};
							var output = "";
							var literal = false;
							if (date) {
								for ( var iFormat = 0; iFormat < format.length; iFormat++) {
									if (literal) {
										if (format.charAt(iFormat) == "'"
												&& !lookAhead("'")) {
											literal = false
										} else {
											output += format.charAt(iFormat)
										}
									} else {
										switch (format.charAt(iFormat)) {
										case "d":
											output += formatNumber("d", date
													.getDate(), 2);
											break;
										case "D":
											output += formatName("D", date
													.getDay(), dayNamesShort,
													dayNames);
											break;
										case "o":
											var doy = date.getDate();
											for ( var m = date.getMonth() - 1; m >= 0; m--) {
												doy += this._getDaysInMonth(
														date.getFullYear(), m)
											}
											output += formatNumber("o", doy, 3);
											break;
										case "m":
											output += formatNumber("m", date
													.getMonth() + 1, 2);
											break;
										case "M":
											output += formatName("M", date
													.getMonth(),
													monthNamesShort, monthNames);
											break;
										case "y":
											output += (lookAhead("y") ? date
													.getFullYear() : (date
													.getYear() % 100 < 10 ? "0"
													: "")
													+ date.getYear() % 100);
											break;
										case "@":
											output += date.getTime();
											break;
										case "'":
											if (lookAhead("'")) {
												output += "'"
											} else {
												literal = true
											}
											break;
										default:
											output += format.charAt(iFormat)
										}
									}
								}
							}
							return output
						},
						_possibleChars : function(format) {
							var chars = "";
							var literal = false;
							for ( var iFormat = 0; iFormat < format.length; iFormat++) {
								if (literal) {
									if (format.charAt(iFormat) == "'"
											&& !lookAhead("'")) {
										literal = false
									} else {
										chars += format.charAt(iFormat)
									}
								} else {
									switch (format.charAt(iFormat)) {
									case "d":
									case "m":
									case "y":
									case "@":
										chars += "0123456789";
										break;
									case "D":
									case "M":
										return null;
									case "'":
										if (lookAhead("'")) {
											chars += "'"
										} else {
											literal = true
										}
										break;
									default:
										chars += format.charAt(iFormat)
									}
								}
							}
							return chars
						},
						_get : function(inst, name) {
							return inst.settings[name] !== undefined ? inst.settings[name]
									: this._defaults[name]
						},
						_setDateFromField : function(inst) {
							var dateFormat = this._get(inst, "dateFormat");
							var dates = inst.input ? inst.input.val() : null;
							inst.endDay = inst.endMonth = inst.endYear = null;
							var date = defaultDate = this._getDefaultDate(inst);
							var settings = this._getFormatConfig(inst);
							try {
								date = this.parseDate(dateFormat, dates,
										settings)
										|| defaultDate
							} catch (event) {
								this.log(event);
								date = defaultDate
							}
							inst.selectedDay = date.getDate();
							inst.drawMonth = inst.selectedMonth = date
									.getMonth();
							inst.drawYear = inst.selectedYear = date
									.getFullYear();
							inst.currentDay = (dates ? date.getDate() : 0);
							inst.currentMonth = (dates ? date.getMonth() : 0);
							inst.currentYear = (dates ? date.getFullYear() : 0);
							this._adjustInstDate(inst)
						},
						_getDefaultDate : function(inst) {
							var date = this._determineDate(this._get(inst,
									"defaultDate"), new Date());
							var minDate = this
									._getMinMaxDate(inst, "min", true);
							var maxDate = this._getMinMaxDate(inst, "max");
							date = (minDate && date < minDate ? minDate : date);
							date = (maxDate && date > maxDate ? maxDate : date);
							return date
						},
						_determineDate : function(date, defaultDate) {
							var offsetNumeric = function(offset) {
								var date = new Date();
								date.setDate(date.getDate() + offset);
								return date
							};
							var offsetString = function(offset, getDaysInMonth) {
								var date = new Date();
								var year = date.getFullYear();
								var month = date.getMonth();
								var day = date.getDate();
								var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
								var matches = pattern.exec(offset);
								while (matches) {
									switch (matches[2] || "d") {
									case "d":
									case "D":
										day += parseInt(matches[1], 10);
										break;
									case "w":
									case "W":
										day += parseInt(matches[1], 10) * 7;
										break;
									case "m":
									case "M":
										month += parseInt(matches[1], 10);
										day = Math.min(day, getDaysInMonth(
												year, month));
										break;
									case "y":
									case "Y":
										year += parseInt(matches[1], 10);
										day = Math.min(day, getDaysInMonth(
												year, month));
										break
									}
									matches = pattern.exec(offset)
								}
								return new Date(year, month, day)
							};
							date = (date == null ? defaultDate
									: (typeof date == "string" ? offsetString(
											date, this._getDaysInMonth)
											: (typeof date == "number" ? (isNaN(date) ? defaultDate
													: offsetNumeric(date))
													: date)));
							date = (date && date.toString() == "Invalid Date" ? defaultDate
									: date);
							if (date) {
								date.setHours(0);
								date.setMinutes(0);
								date.setSeconds(0);
								date.setMilliseconds(0)
							}
							return this._daylightSavingAdjust(date)
						},
						_daylightSavingAdjust : function(date) {
							if (!date) {
								return null
							}
							date.setHours(date.getHours() > 12 ? date
									.getHours() + 2 : 0);
							return date
						},
						_setDate : function(inst, date, endDate) {
							var clear = !(date);
							var origMonth = inst.selectedMonth;
							var origYear = inst.selectedYear;
							date = this._determineDate(date, new Date());
							inst.selectedDay = inst.currentDay = date.getDate();
							inst.drawMonth = inst.selectedMonth = inst.currentMonth = date
									.getMonth();
							inst.drawYear = inst.selectedYear = inst.currentYear = date
									.getFullYear();
							if (origMonth != inst.selectedMonth
									|| origYear != inst.selectedYear) {
								this._notifyChange(inst)
							}
							this._adjustInstDate(inst);
							if (inst.input) {
								inst.input.val(clear ? "" : this
										._formatDate(inst))
							}
						},
						_getDate : function(inst) {
							var startDate = (!inst.currentYear
									|| (inst.input && inst.input.val() == "") ? null
									: this
											._daylightSavingAdjust(new Date(
													inst.currentYear,
													inst.currentMonth,
													inst.currentDay)));
							return startDate
						},
						_generateHTML : function(inst) {
							var today = new Date();
							today = this._daylightSavingAdjust(new Date(today
									.getFullYear(), today.getMonth(), today
									.getDate()));
							var isRTL = this._get(inst, "isRTL");
							var showButtonPanel = this._get(inst,
									"showButtonPanel");
							var hideIfNoPrevNext = this._get(inst,
									"hideIfNoPrevNext");
							var navigationAsDateFormat = this._get(inst,
									"navigationAsDateFormat");
							var numMonths = this._getNumberOfMonths(inst);
							var showCurrentAtPos = this._get(inst,
									"showCurrentAtPos");
							var stepMonths = this._get(inst, "stepMonths");
							var stepBigMonths = this
									._get(inst, "stepBigMonths");
							var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
							var currentDate = this
									._daylightSavingAdjust((!inst.currentDay ? new Date(
											9999, 9, 9)
											: new Date(inst.currentYear,
													inst.currentMonth,
													inst.currentDay)));
							var minDate = this
									._getMinMaxDate(inst, "min", true);
							var maxDate = this._getMinMaxDate(inst, "max");
							var drawMonth = inst.drawMonth - showCurrentAtPos;
							var drawYear = inst.drawYear;
							if (drawMonth < 0) {
								drawMonth += 12;
								drawYear--
							}
							if (maxDate) {
								var maxDraw = this
										._daylightSavingAdjust(new Date(maxDate
												.getFullYear(), maxDate
												.getMonth()
												- numMonths[1] + 1, maxDate
												.getDate()));
								maxDraw = (minDate && maxDraw < minDate ? minDate
										: maxDraw);
								while (this._daylightSavingAdjust(new Date(
										drawYear, drawMonth, 1)) > maxDraw) {
									drawMonth--;
									if (drawMonth < 0) {
										drawMonth = 11;
										drawYear--
									}
								}
							}
							inst.drawMonth = drawMonth;
							inst.drawYear = drawYear;
							var prevText = this._get(inst, "prevText");
							prevText = (!navigationAsDateFormat ? prevText
									: this.formatDate(prevText, this
											._daylightSavingAdjust(new Date(
													drawYear, drawMonth
															- stepMonths, 1)),
											this._getFormatConfig(inst)));
							var prev = (this._canAdjustMonth(inst, -1,
									drawYear, drawMonth) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'
									+ inst.id
									+ "', -"
									+ stepMonths
									+ ", 'M');\" title=\""
									+ prevText
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (isRTL ? "e" : "w")
									+ '">'
									+ prevText
									+ "</span></a>"
									: (hideIfNoPrevNext ? ""
											: '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'
													+ prevText
													+ '"><span class="ui-icon ui-icon-circle-triangle-'
													+ (isRTL ? "e" : "w")
													+ '">'
													+ prevText
													+ "</span></a>"));
							var nextText = this._get(inst, "nextText");
							nextText = (!navigationAsDateFormat ? nextText
									: this.formatDate(nextText, this
											._daylightSavingAdjust(new Date(
													drawYear, drawMonth
															+ stepMonths, 1)),
											this._getFormatConfig(inst)));
							var next = (this._canAdjustMonth(inst, +1,
									drawYear, drawMonth) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'
									+ inst.id
									+ "', +"
									+ stepMonths
									+ ", 'M');\" title=\""
									+ nextText
									+ '"><span class="ui-icon ui-icon-circle-triangle-'
									+ (isRTL ? "w" : "e")
									+ '">'
									+ nextText
									+ "</span></a>"
									: (hideIfNoPrevNext ? ""
											: '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'
													+ nextText
													+ '"><span class="ui-icon ui-icon-circle-triangle-'
													+ (isRTL ? "w" : "e")
													+ '">'
													+ nextText
													+ "</span></a>"));
							var currentText = this._get(inst, "currentText");
							var gotoDate = (this._get(inst, "gotoCurrent")
									&& inst.currentDay ? currentDate : today);
							currentText = (!navigationAsDateFormat ? currentText
									: this.formatDate(currentText, gotoDate,
											this._getFormatConfig(inst)));
							var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'
									+ this._get(inst, "closeText")
									+ "</button>"
									: "");
							var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">'
									+ (isRTL ? controls : "")
									+ (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'
											+ inst.id
											+ "');\">"
											+ currentText
											+ "</button>"
											: "")
									+ (isRTL ? "" : controls)
									+ "</div>"
									: "";
							var firstDay = parseInt(
									this._get(inst, "firstDay"), 10);
							firstDay = (isNaN(firstDay) ? 0 : firstDay);
							var dayNames = this._get(inst, "dayNames");
							var dayNamesShort = this
									._get(inst, "dayNamesShort");
							var dayNamesMin = this._get(inst, "dayNamesMin");
							var monthNames = this._get(inst, "monthNames");
							var monthNamesShort = this._get(inst,
									"monthNamesShort");
							var beforeShowDay = this
									._get(inst, "beforeShowDay");
							var showOtherMonths = this._get(inst,
									"showOtherMonths");
							var calculateWeek = this
									._get(inst, "calculateWeek")
									|| this.iso8601Week;
							var endDate = inst.endDay ? this
									._daylightSavingAdjust(new Date(
											inst.endYear, inst.endMonth,
											inst.endDay)) : currentDate;
							var defaultDate = this._getDefaultDate(inst);
							var html = "";
							for ( var row = 0; row < numMonths[0]; row++) {
								var group = "";
								for ( var col = 0; col < numMonths[1]; col++) {
									var selectedDate = this
											._daylightSavingAdjust(new Date(
													drawYear, drawMonth,
													inst.selectedDay));
									var cornerClass = " ui-corner-all";
									var calender = "";
									if (isMultiMonth) {
										calender += '<div class="ui-datepicker-group ui-datepicker-group-';
										switch (col) {
										case 0:
											calender += "first";
											cornerClass = " ui-corner-"
													+ (isRTL ? "right" : "left");
											break;
										case numMonths[1] - 1:
											calender += "last";
											cornerClass = " ui-corner-"
													+ (isRTL ? "left" : "right");
											break;
										default:
											calender += "middle";
											cornerClass = "";
											break
										}
										calender += '">'
									}
									calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'
											+ cornerClass
											+ '">'
											+ (/all|left/.test(cornerClass)
													&& row == 0 ? (isRTL ? next
													: prev) : "")
											+ (/all|right/.test(cornerClass)
													&& row == 0 ? (isRTL ? prev
													: next) : "")
											+ this
													._generateMonthYearHeader(
															inst, drawMonth,
															drawYear, minDate,
															maxDate,
															selectedDate,
															row > 0 || col > 0,
															monthNames,
															monthNamesShort)
											+ '</div><table class="ui-datepicker-calendar"><thead><tr>';
									var thead = "";
									for ( var dow = 0; dow < 7; dow++) {
										var day = (dow + firstDay) % 7;
										thead += "<th"
												+ ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"'
														: "")
												+ '><span title="'
												+ dayNames[day] + '">'
												+ dayNamesMin[day]
												+ "</span></th>"
									}
									calender += thead + "</tr></thead><tbody>";
									var daysInMonth = this._getDaysInMonth(
											drawYear, drawMonth);
									if (drawYear == inst.selectedYear
											&& drawMonth == inst.selectedMonth) {
										inst.selectedDay = Math.min(
												inst.selectedDay, daysInMonth)
									}
									var leadDays = (this._getFirstDayOfMonth(
											drawYear, drawMonth)
											- firstDay + 7) % 7;
									var numRows = (isMultiMonth ? 6 : Math
											.ceil((leadDays + daysInMonth) / 7));
									var printDate = this
											._daylightSavingAdjust(new Date(
													drawYear, drawMonth,
													1 - leadDays));
									for ( var dRow = 0; dRow < numRows; dRow++) {
										calender += "<tr>";
										var tbody = "";
										for ( var dow = 0; dow < 7; dow++) {
											var daySettings = (beforeShowDay ? beforeShowDay
													.apply(
															(inst.input ? inst.input[0]
																	: null),
															[ printDate ])
													: [ true, "" ]);
											var otherMonth = (printDate
													.getMonth() != drawMonth);
											var unselectable = otherMonth
													|| !daySettings[0]
													|| (minDate && printDate < minDate)
													|| (maxDate && printDate > maxDate);
											tbody += '<td class="'
													+ ((dow + firstDay + 6) % 7 >= 5 ? " ui-datepicker-week-end"
															: "")
													+ (otherMonth ? " ui-datepicker-other-month"
															: "")
													+ ((printDate.getTime() == selectedDate
															.getTime()
															&& drawMonth == inst.selectedMonth && inst._keyEvent)
															|| (defaultDate
																	.getTime() == printDate
																	.getTime() && defaultDate
																	.getTime() == selectedDate
																	.getTime()) ? " "
															+ this._dayOverClass
															: "")
													+ (unselectable ? " "
															+ this._unselectableClass
															+ " ui-state-disabled"
															: "")
													+ (otherMonth
															&& !showOtherMonths ? ""
															: " "
																	+ daySettings[1]
																	+ (printDate
																			.getTime() >= currentDate
																			.getTime()
																			&& printDate
																					.getTime() <= endDate
																					.getTime() ? " "
																			+ this._currentClass
																			: "")
																	+ (printDate
																			.getTime() == today
																			.getTime() ? " ui-datepicker-today"
																			: ""))
													+ '"'
													+ ((!otherMonth || showOtherMonths)
															&& daySettings[2] ? ' title="'
															+ daySettings[2]
															+ '"'
															: "")
													+ (unselectable ? ""
															: " onclick=\"DP_jQuery.datepicker._selectDay('#"
																	+ inst.id
																	+ "',"
																	+ drawMonth
																	+ ","
																	+ drawYear
																	+ ', this);return false;"')
													+ ">"
													+ (otherMonth ? (showOtherMonths ? printDate
															.getDate()
															: "&#xa0;")
															: (unselectable ? '<span class="ui-state-default">'
																	+ printDate
																			.getDate()
																	+ "</span>"
																	: '<a class="ui-state-default'
																			+ (printDate
																					.getTime() == today
																					.getTime() ? " ui-state-highlight"
																					: "")
																			+ (printDate
																					.getTime() >= currentDate
																					.getTime()
																					&& printDate
																							.getTime() <= endDate
																							.getTime() ? " ui-state-active"
																					: "")
																			+ '" href="#">'
																			+ printDate
																					.getDate()
																			+ "</a>"))
													+ "</td>";
											printDate.setDate(printDate
													.getDate() + 1);
											printDate = this
													._daylightSavingAdjust(printDate)
										}
										calender += tbody + "</tr>"
									}
									drawMonth++;
									if (drawMonth > 11) {
										drawMonth = 0;
										drawYear++
									}
									calender += "</tbody></table>"
											+ (isMultiMonth ? "</div>"
													+ ((numMonths[0] > 0 && col == numMonths[1] - 1) ? '<div class="ui-datepicker-row-break"></div>'
															: "")
													: "");
									group += calender
								}
								html += group
							}
							html += buttonPanel
									+ ($.browser.msie
											&& parseInt($.browser.version, 10) < 7
											&& !inst.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>'
											: "");
							inst._keyEvent = false;
							return html
						},
						_generateMonthYearHeader : function(inst, drawMonth,
								drawYear, minDate, maxDate, selectedDate,
								secondary, monthNames, monthNamesShort) {
							minDate = (inst.rangeStart && minDate
									&& selectedDate < minDate ? selectedDate
									: minDate);
							var changeMonth = this._get(inst, "changeMonth");
							var changeYear = this._get(inst, "changeYear");
							var showMonthAfterYear = this._get(inst,
									"showMonthAfterYear");
							var html = '<div class="ui-datepicker-title">';
							var monthHtml = "";
							if (secondary || !changeMonth) {
								monthHtml += '<span class="ui-datepicker-month">'
										+ monthNames[drawMonth] + "</span> "
							} else {
								var inMinYear = (minDate && minDate
										.getFullYear() == drawYear);
								var inMaxYear = (maxDate && maxDate
										.getFullYear() == drawYear);
								monthHtml += '<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'
										+ inst.id
										+ "', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"
										+ inst.id + "');\">";
								for ( var month = 0; month < 12; month++) {
									if ((!inMinYear || month >= minDate
											.getMonth())
											&& (!inMaxYear || month <= maxDate
													.getMonth())) {
										monthHtml += '<option value="'
												+ month
												+ '"'
												+ (month == drawMonth ? ' selected="selected"'
														: "") + ">"
												+ monthNamesShort[month]
												+ "</option>"
									}
								}
								monthHtml += "</select>"
							}
							if (!showMonthAfterYear) {
								html += monthHtml
										+ ((secondary || changeMonth || changeYear)
												&& (!(changeMonth && changeYear)) ? "&#xa0;"
												: "")
							}
							if (secondary || !changeYear) {
								html += '<span class="ui-datepicker-year">'
										+ drawYear + "</span>"
							} else {
								var years = this._get(inst, "yearRange").split(
										":");
								var year = 0;
								var endYear = 0;
								if (years.length != 2) {
									year = drawYear - 10;
									endYear = drawYear + 10
								} else {
									if (years[0].charAt(0) == "+"
											|| years[0].charAt(0) == "-") {
										year = drawYear
												+ parseInt(years[0], 10);
										endYear = drawYear
												+ parseInt(years[1], 10)
									} else {
										year = parseInt(years[0], 10);
										endYear = parseInt(years[1], 10)
									}
								}
								year = (minDate ? Math.max(year, minDate
										.getFullYear()) : year);
								endYear = (maxDate ? Math.min(endYear, maxDate
										.getFullYear()) : endYear);
								html += '<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'
										+ inst.id
										+ "', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"
										+ inst.id + "');\">";
								for (; year <= endYear; year++) {
									html += '<option value="'
											+ year
											+ '"'
											+ (year == drawYear ? ' selected="selected"'
													: "") + ">" + year
											+ "</option>"
								}
								html += "</select>"
							}
							if (showMonthAfterYear) {
								html += (secondary || changeMonth || changeYear ? "&#xa0;"
										: "")
										+ monthHtml
							}
							html += "</div>";
							return html
						},
						_adjustInstDate : function(inst, offset, period) {
							var year = inst.drawYear
									+ (period == "Y" ? offset : 0);
							var month = inst.drawMonth
									+ (period == "M" ? offset : 0);
							var day = Math.min(inst.selectedDay, this
									._getDaysInMonth(year, month))
									+ (period == "D" ? offset : 0);
							var date = this._daylightSavingAdjust(new Date(
									year, month, day));
							var minDate = this
									._getMinMaxDate(inst, "min", true);
							var maxDate = this._getMinMaxDate(inst, "max");
							date = (minDate && date < minDate ? minDate : date);
							date = (maxDate && date > maxDate ? maxDate : date);
							inst.selectedDay = date.getDate();
							inst.drawMonth = inst.selectedMonth = date
									.getMonth();
							inst.drawYear = inst.selectedYear = date
									.getFullYear();
							if (period == "M" || period == "Y") {
								this._notifyChange(inst)
							}
						},
						_notifyChange : function(inst) {
							var onChange = this._get(inst, "onChangeMonthYear");
							if (onChange) {
								onChange.apply((inst.input ? inst.input[0]
										: null), [ inst.selectedYear,
										inst.selectedMonth + 1, inst ])
							}
						},
						_getNumberOfMonths : function(inst) {
							var numMonths = this._get(inst, "numberOfMonths");
							return (numMonths == null ? [ 1, 1 ]
									: (typeof numMonths == "number" ? [ 1,
											numMonths ] : numMonths))
						},
						_getMinMaxDate : function(inst, minMax, checkRange) {
							var date = this._determineDate(this._get(inst,
									minMax + "Date"), null);
							return (!checkRange || !inst.rangeStart ? date
									: (!date || inst.rangeStart > date ? inst.rangeStart
											: date))
						},
						_getDaysInMonth : function(year, month) {
							return 32 - new Date(year, month, 32).getDate()
						},
						_getFirstDayOfMonth : function(year, month) {
							return new Date(year, month, 1).getDay()
						},
						_canAdjustMonth : function(inst, offset, curYear,
								curMonth) {
							var numMonths = this._getNumberOfMonths(inst);
							var date = this._daylightSavingAdjust(new Date(
									curYear, curMonth
											+ (offset < 0 ? offset
													: numMonths[1]), 1));
							if (offset < 0) {
								date.setDate(this._getDaysInMonth(date
										.getFullYear(), date.getMonth()))
							}
							return this._isInRange(inst, date)
						},
						_isInRange : function(inst, date) {
							var newMinDate = (!inst.rangeStart ? null : this
									._daylightSavingAdjust(new Date(
											inst.selectedYear,
											inst.selectedMonth,
											inst.selectedDay)));
							newMinDate = (newMinDate
									&& inst.rangeStart < newMinDate ? inst.rangeStart
									: newMinDate);
							var minDate = newMinDate
									|| this._getMinMaxDate(inst, "min");
							var maxDate = this._getMinMaxDate(inst, "max");
							return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate))
						},
						_getFormatConfig : function(inst) {
							var shortYearCutoff = this._get(inst,
									"shortYearCutoff");
							shortYearCutoff = (typeof shortYearCutoff != "string" ? shortYearCutoff
									: new Date().getFullYear() % 100
											+ parseInt(shortYearCutoff, 10));
							return {
								shortYearCutoff : shortYearCutoff,
								dayNamesShort : this
										._get(inst, "dayNamesShort"),
								dayNames : this._get(inst, "dayNames"),
								monthNamesShort : this._get(inst,
										"monthNamesShort"),
								monthNames : this._get(inst, "monthNames")
							}
						},
						_formatDate : function(inst, day, month, year) {
							if (!day) {
								inst.currentDay = inst.selectedDay;
								inst.currentMonth = inst.selectedMonth;
								inst.currentYear = inst.selectedYear
							}
							var date = (day ? (typeof day == "object" ? day
									: this._daylightSavingAdjust(new Date(year,
											month, day)))
									: this
											._daylightSavingAdjust(new Date(
													inst.currentYear,
													inst.currentMonth,
													inst.currentDay)));
							return this.formatDate(this
									._get(inst, "dateFormat"), date, this
									._getFormatConfig(inst))
						}
					});
	function extendRemove(target, props) {
		$.extend(target, props);
		for ( var name in props) {
			if (props[name] == null || props[name] == undefined) {
				target[name] = props[name]
			}
		}
		return target
	}
	function isArray(a) {
		return (a && (($.browser.safari && typeof a == "object" && a.length) || (a.constructor && a.constructor
				.toString().match(/\Array\(\)/))))
	}
	$.fn.datepicker = function(options) {
		if (!$.datepicker.initialized) {
			$(document).mousedown($.datepicker._checkExternalClick)
					.find("body").append($.datepicker.dpDiv);
			$.datepicker.initialized = true
		}
		var otherArgs = Array.prototype.slice.call(arguments, 1);
		if (typeof options == "string"
				&& (options == "isDisabled" || options == "getDate")) {
			return $.datepicker["_" + options + "Datepicker"].apply(
					$.datepicker, [ this[0] ].concat(otherArgs))
		}
		if (options == "option" && arguments.length == 2
				&& typeof arguments[1] == "string") {
			return $.datepicker["_" + options + "Datepicker"].apply(
					$.datepicker, [ this[0] ].concat(otherArgs))
		}
		return this.each(function() {
			typeof options == "string" ? $.datepicker["_" + options
					+ "Datepicker"].apply($.datepicker, [ this ]
					.concat(otherArgs)) : $.datepicker._attachDatepicker(this,
					options)
		})
	};
	$.datepicker = new Datepicker();
	$.datepicker.initialized = false;
	$.datepicker.uuid = new Date().getTime();
	$.datepicker.version = "1.7.2";
	window.DP_jQuery = $
})(jQuery);;/*
			 * jQuery UI Progressbar 1.7.2
			 * 
			 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) Dual
			 * licensed under the MIT (MIT-LICENSE.txt) and GPL
			 * (GPL-LICENSE.txt) licenses.
			 * 
			 * http://docs.jquery.com/UI/Progressbar
			 * 
			 * Depends: ui.core.js
			 */
(function(a) {
	a
			.widget(
					"ui.progressbar",
					{
						_init : function() {
							this.element
									.addClass(
											"ui-progressbar ui-widget ui-widget-content ui-corner-all")
									.attr({
										role : "progressbar",
										"aria-valuemin" : this._valueMin(),
										"aria-valuemax" : this._valueMax(),
										"aria-valuenow" : this._value()
									});
							this.valueDiv = a(
									'<div class="ui-progressbar-value ui-widget-header ui-corner-left"></div>')
									.appendTo(this.element);
							this._refreshValue()
						},
						destroy : function() {
							this.element
									.removeClass(
											"ui-progressbar ui-widget ui-widget-content ui-corner-all")
									.removeAttr("role").removeAttr(
											"aria-valuemin").removeAttr(
											"aria-valuemax").removeAttr(
											"aria-valuenow").removeData(
											"progressbar").unbind(
											".progressbar");
							this.valueDiv.remove();
							a.widget.prototype.destroy.apply(this, arguments)
						},
						value : function(b) {
							if (b === undefined) {
								return this._value()
							}
							this._setData("value", b);
							return this
						},
						_setData : function(b, c) {
							switch (b) {
							case "value":
								this.options.value = c;
								this._refreshValue();
								this._trigger("change", null, {});
								break
							}
							a.widget.prototype._setData.apply(this, arguments)
						},
						_value : function() {
							var b = this.options.value;
							if (b < this._valueMin()) {
								b = this._valueMin()
							}
							if (b > this._valueMax()) {
								b = this._valueMax()
							}
							return b
						},
						_valueMin : function() {
							var b = 0;
							return b
						},
						_valueMax : function() {
							var b = 100;
							return b
						},
						_refreshValue : function() {
							var b = this.value();
							this.valueDiv[b == this._valueMax() ? "addClass"
									: "removeClass"]("ui-corner-right");
							this.valueDiv.width(b + "%");
							this.element.attr("aria-valuenow", b)
						}
					});
	a.extend(a.ui.progressbar, {
		version : "1.7.2",
		defaults : {
			value : 0
		}
	})
})(jQuery);;